Something went wrong. Try again.
Reactos
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066/* * DirectDraw driver interface * (DirectX 7 version) * * Copyright (C) 2001 Ove Kaaven * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
#ifndef __DDRAWI_INCLUDED__#define __DDRAWI_INCLUDED__
#ifdef __cplusplusextern "C" {#endif
#define OBJECT_ISROOT 0x80000000
#include <ddraw.h>#include <dvp.h>#include <ddkernel.h>#include <dmemmgr.h>
#define DDAPI WINAPI
#define VALID_ALIGNMENT(align) \ (!((align==0)||(align%2)!= 0 ))
/* the DirectDraw versions */#define DD_VERSION 0x0200 /* compatibility version */#define DD_RUNTIME_VERSION 0x0902 /* actual version */
/* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */#define DD_HAL_VERSION 0x0100
/* more DCICOMMAND escapes */#ifndef DCICOMMAND#define DCICOMMAND 3075#endif
#define DDCREATEDRIVEROBJECT 10#define DDGET32BITDRIVERNAME 11#define DDNEWCALLBACKFNS 12#define DDVERSIONINFO 13
#define DDUNSUPPORTEDMODE ((DWORD) -1)
#include "dciddi.h"
#ifndef CCHDEVICENAME#define CCHDEVICENAME 32#endif#define MAX_DRIVER_NAME CCHDEVICENAME
#define DDHAL_DRIVER_DLLNAME "DDRAW16.DLL"#define DDHAL_APP_DLLNAME "DDRAW.DLL"
/* GUID */#ifdef _WIN32DEFINE_GUID(GUID_MiscellaneousCallbacks, 0xefd60cc0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);DEFINE_GUID(GUID_VideoPortCallbacks, 0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);DEFINE_GUID(GUID_ColorControlCallbacks, 0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);DEFINE_GUID(GUID_VideoPortCaps, 0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);DEFINE_GUID(GUID_D3DCallbacks2, 0x0ba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);DEFINE_GUID(GUID_D3DCallbacks3, 0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e);DEFINE_GUID(GUID_NonLocalVidMemCaps, 0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37);DEFINE_GUID(GUID_KernelCallbacks, 0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);DEFINE_GUID(GUID_KernelCaps, 0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);DEFINE_GUID(GUID_D3DExtendedCaps, 0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);DEFINE_GUID(GUID_ZPixelFormats, 0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae);DEFINE_GUID(GUID_DDMoreSurfaceCaps, 0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5);DEFINE_GUID(GUID_DDStereoMode, 0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6);DEFINE_GUID(GUID_OptSurfaceKmodeInfo, 0xe05c8472, 0x51d4, 0x11d1, 0x8c, 0xce, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);DEFINE_GUID(GUID_OptSurfaceUmodeInfo, 0x9d792804, 0x5fa8, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);DEFINE_GUID(GUID_UserModeDriverInfo, 0xf0b0e8e2, 0x5f97, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);DEFINE_GUID(GUID_UserModeDriverPassword, 0x97f861b6, 0x60a1, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);DEFINE_GUID(GUID_MotionCompCallbacks, 0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e);DEFINE_GUID(GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A);#endif
#ifndef _WIN32#undef E_NOTIMPL#undef E_OUTOFMEMORY#undef E_INVALIDARG#undef E_FAIL#define E_NOTIMPL 0x80004001L#define E_OUTOFMEMORY 0x8007000EL#define E_INVALIDARG 0x80070057L#define E_FAIL 0x80004005L#endif
/***************************************************************************** * Initialization stuff */typedef struct { char szName[260]; char szEntryPoint[64]; DWORD dwContext;} DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA;
typedef struct { DWORD dwHALVersion; ULONG_PTR dwReserved1; ULONG_PTR dwReserved2;} DDVERSIONDATA,*LPDDVERSIONDATA;
typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext);
/* predeclare some structures */typedef struct _DDHALINFO *LPDDHALINFO;typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT;
#ifndef DDRAWI_DIRECTDRAW_DEFINEDtypedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL;typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL;#define DDRAWI_DIRECTDRAW_DEFINED#endif
typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT;
#ifndef DDRAWI_DDRAWSURFACE_DEFINEDtypedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL;#define DDRAWI_DDRAWSURFACE_DEFINED#endif
typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL;typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE;typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE;typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT;typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL;typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL;typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT;typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL;typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL;typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT;typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL;typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT;typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL;
/***************************************************************************** * driver->ddraw callbacks */typedef BOOL (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset);typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight);typedef void (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem);
typedef struct { DWORD dwSize; LPDDHAL_SETINFO lpSetInfo; LPDDHAL_VIDMEMALLOC lpVidMemAlloc; LPDDHAL_VIDMEMFREE lpVidMemFree;} DDHALDDRAWFNS, *LPDDHALDDRAWFNS;
/***************************************************************************** * mode info structure */typedef struct _DDHALMODEINFO { DWORD dwWidth; DWORD dwHeight; LONG lPitch; DWORD dwBPP; WORD wFlags; WORD wRefreshRate; DWORD dwRBitMask; DWORD dwGBitMask; DWORD dwBBitMask; DWORD dwAlphaBitMask;} DDHALMODEINFO, *LPDDHALMODEINFO;
#define DDMODEINFO_PALETTIZED 0x0001#define DDMODEINFO_MODEX 0x0002#define DDMODEINFO_UNSUPPORTED 0x0004#define DDMODEINFO_STANDARDVGA 0x0008#define DDMODEINFO_MAXREFRESH 0x0010#define DDMODEINFO_STEREO 0x0020
/***************************************************************************** * video memory info structure */typedef struct _VIDMEM { DWORD dwFlags; FLATPTR fpStart; __GNU_EXTENSION union { FLATPTR fpEnd; DWORD dwWidth; }; DDSCAPS ddsCaps; DDSCAPS ddsCapsAlt; __GNU_EXTENSION union { LPVMEMHEAP lpHeap; DWORD dwHeight; };} VIDMEM;
#define VIDMEM_ISLINEAR 0x00000001l#define VIDMEM_ISRECTANGULAR 0x00000002l#define VIDMEM_ISHEAP 0x00000004l#define VIDMEM_ISNONLOCAL 0x00000008l#define VIDMEM_ISWC 0x00000010l#define VIDMEM_HEAPDISABLED 0x00000020l
typedef struct _VIDMEMINFO { FLATPTR fpPrimary; DWORD dwFlags; DWORD dwDisplayWidth; DWORD dwDisplayHeight; LONG lDisplayPitch; DDPIXELFORMAT ddpfDisplay; DWORD dwOffscreenAlign; DWORD dwOverlayAlign; DWORD dwTextureAlign; DWORD dwZBufferAlign; DWORD dwAlphaAlign; DWORD dwNumHeaps; LPVIDMEM pvmList;} VIDMEMINFO, *LPVIDMEMINFO;
typedef struct _HEAPALIAS { FLATPTR fpVidMem; LPVOID lpAlias; DWORD dwAliasSize;} HEAPALIAS, *LPHEAPALIAS;
typedef struct _HEAPALIASINFO { DWORD dwRefCnt; DWORD dwFlags; DWORD dwNumHeaps; LPHEAPALIAS lpAliases;} HEAPALIASINFO, *LPHEAPALIASINFO;
#define HEAPALIASINFO_MAPPEDREAL 0x00000001#define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
/***************************************************************************** * capabilities structures */typedef struct _DDCORECAPS { DWORD dwSize; DWORD dwCaps; DWORD dwCaps2; DWORD dwCKeyCaps; DWORD dwFXCaps; DWORD dwFXAlphaCaps; DWORD dwPalCaps; DWORD dwSVCaps; DWORD dwAlphaBltConstBitDepths; DWORD dwAlphaBltPixelBitDepths; DWORD dwAlphaBltSurfaceBitDepths; DWORD dwAlphaOverlayConstBitDepths; DWORD dwAlphaOverlayPixelBitDepths; DWORD dwAlphaOverlaySurfaceBitDepths; DWORD dwZBufferBitDepths; DWORD dwVidMemTotal; DWORD dwVidMemFree; DWORD dwMaxVisibleOverlays; DWORD dwCurrVisibleOverlays; DWORD dwNumFourCCCodes; DWORD dwAlignBoundarySrc; DWORD dwAlignSizeSrc; DWORD dwAlignBoundaryDest; DWORD dwAlignSizeDest; DWORD dwAlignStrideAlign; DWORD dwRops[DD_ROP_SPACE]; DDSCAPS ddsCaps; DWORD dwMinOverlayStretch; DWORD dwMaxOverlayStretch; DWORD dwMinLiveVideoStretch; DWORD dwMaxLiveVideoStretch; DWORD dwMinHwCodecStretch; DWORD dwMaxHwCodecStretch; DWORD dwReserved1; DWORD dwReserved2; DWORD dwReserved3; DWORD dwSVBCaps; DWORD dwSVBCKeyCaps; DWORD dwSVBFXCaps; DWORD dwSVBRops[DD_ROP_SPACE]; DWORD dwVSBCaps; DWORD dwVSBCKeyCaps; DWORD dwVSBFXCaps; DWORD dwVSBRops[DD_ROP_SPACE]; DWORD dwSSBCaps; DWORD dwSSBCKeyCaps; DWORD dwSSBFXCaps; DWORD dwSSBRops[DD_ROP_SPACE]; DWORD dwMaxVideoPorts; DWORD dwCurrVideoPorts; DWORD dwSVBCaps2;} DDCORECAPS, *LPDDCORECAPS;
typedef struct _DDNONLOCALVIDMEMCAPS { DWORD dwSize; DWORD dwNLVBCaps; DWORD dwNLVBCaps2; DWORD dwNLVBCKeyCaps; DWORD dwNLVBFXCaps; DWORD dwNLVBRops[DD_ROP_SPACE];} DDNONLOCALVIDMEMCAPS, *LPDDNONLOCALVIDMEMCAPS;
#define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2#define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1#define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
/***************************************************************************** * ddraw->driver callbacks */#define DDHAL_DRIVER_NOTHANDLED 0x00000000l#define DDHAL_DRIVER_HANDLED 0x00000001l#define DDHAL_DRIVER_NOCKEYHW 0x00000002l
typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA;typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA;typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA;typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA;typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA;typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA;typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA;typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA;typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA;typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA;
typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER) (LPDDHAL_DESTROYDRIVERDATA);typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE) (LPDDHAL_CREATESURFACEDATA);typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY) (LPDDHAL_DRVSETCOLORKEYDATA);typedef DWORD (PASCAL *LPDDHAL_SETMODE) (LPDDHAL_SETMODEDATA);typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA);typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE) (LPDDHAL_CANCREATESURFACEDATA );typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE) (LPDDHAL_CREATEPALETTEDATA);typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE) (LPDDHAL_GETSCANLINEDATA);typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE) (LPDDHAL_SETEXCLUSIVEMODEDATA);typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE) (LPDDHAL_FLIPTOGDISURFACEDATA);
typedef struct _DDHAL_DDCALLBACKS { DWORD dwSize; DWORD dwFlags; LPDDHAL_DESTROYDRIVER DestroyDriver; LPDDHAL_CREATESURFACE CreateSurface; LPDDHAL_SETCOLORKEY SetColorKey; LPDDHAL_SETMODE SetMode; LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank; LPDDHAL_CANCREATESURFACE CanCreateSurface; LPDDHAL_CREATEPALETTE CreatePalette; LPDDHAL_GETSCANLINE GetScanLine; /* DirectX 2 */ LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode; LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface;} DDHAL_DDCALLBACKS, *LPDDHAL_DDCALLBACKS;
typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA;typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA;typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA;typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA;typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA;typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA;typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA;typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA;typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA;typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA;typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA;typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA;typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA;
typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA);typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA);
typedef struct _DDHAL_DDSURFACECALLBACKS { DWORD dwSize; DWORD dwFlags; LPDDHALSURFCB_DESTROYSURFACE DestroySurface; LPDDHALSURFCB_FLIP Flip; LPDDHALSURFCB_SETCLIPLIST SetClipList; LPDDHALSURFCB_LOCK Lock; LPDDHALSURFCB_UNLOCK Unlock; LPDDHALSURFCB_BLT Blt; LPDDHALSURFCB_SETCOLORKEY SetColorKey; LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface; LPDDHALSURFCB_GETBLTSTATUS GetBltStatus; LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus; LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay; LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition; LPVOID reserved4; LPDDHALSURFCB_SETPALETTE SetPalette;} DDHAL_DDSURFACECALLBACKS, *LPDDHAL_DDSURFACECALLBACKS;
typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA;typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA;
typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE) (LPDDHAL_DESTROYPALETTEDATA);typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA);
typedef struct _DDHAL_DDPALETTECALLBACKS { DWORD dwSize; DWORD dwFlags; LPDDHALPALCB_DESTROYPALETTE DestroyPalette; LPDDHALPALCB_SETENTRIES SetEntries;} DDHAL_DDPALETTECALLBACKS, *LPDDHAL_DDPALETTECALLBACKS;
typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF) (LPDDHAL_CANCREATESURFACEDATA);typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA);typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA);typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA);typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA);
typedef struct _DDHAL_DDEXEBUFCALLBACKS { DWORD dwSize; DWORD dwFlags; LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer; LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer; LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer; LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer; LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer;} DDHAL_DDEXEBUFCALLBACKS, *LPDDHAL_DDEXEBUFCALLBACKS;
typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA *LPDDHAL_GETAVAILDRIVERMEMORYDATA;typedef struct _DDHAL_UPDATENONLOCALHEAPDATA *LPDDHAL_UPDATENONLOCALHEAPDATA;typedef struct _DDHAL_GETHEAPALIGNMENTDATA *LPDDHAL_GETHEAPALIGNMENTDATA;
typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA);typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP) (LPDDHAL_UPDATENONLOCALHEAPDATA);typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT) (LPDDHAL_GETHEAPALIGNMENTDATA);
typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS { DWORD dwSize; DWORD dwFlags; LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory; LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap; LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment; LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus;} DDHAL_DDMISCELLANEOUSCALLBACKS, *LPDDHAL_DDMISCELLANEOUSCALLBACKS;
typedef struct _DDHAL_CREATESURFACEEXDATA *LPDDHAL_CREATESURFACEEXDATA;typedef struct _DDHAL_GETDRIVERSTATEDATA *LPDDHAL_GETDRIVERSTATEDATA;typedef struct _DDHAL_DESTROYDDLOCALDATA *LPDDHAL_DESTROYDDLOCALDATA;
typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA);typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA);typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA);
typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS { DWORD dwSize; DWORD dwFlags; LPVOID Reserved; LPDDHAL_CREATESURFACEEX CreateSurfaceEx; LPDDHAL_GETDRIVERSTATE GetDriverState; LPDDHAL_DESTROYDDLOCAL DestroyDDLocal;} DDHAL_DDMISCELLANEOUS2CALLBACKS, *LPDDHAL_DDMISCELLANEOUS2CALLBACKS;
typedef struct _DDHAL_CANCREATEVPORTDATA *LPDDHAL_CANCREATEVPORTDATA;typedef struct _DDHAL_CREATEVPORTDATA *LPDDHAL_CREATEVPORTDATA;typedef struct _DDHAL_FLIPVPORTDATA *LPDDHAL_FLIPVPORTDATA;typedef struct _DDHAL_GETVPORTCONNECTDATA *LPDDHAL_GETVPORTCONNECTDATA;typedef struct _DDHAL_GETVPORTBANDWIDTHDATA *LPDDHAL_GETVPORTBANDWIDTHDATA;typedef struct _DDHAL_GETVPORTINPUTFORMATDATA *LPDDHAL_GETVPORTINPUTFORMATDATA;typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA *LPDDHAL_GETVPORTOUTPUTFORMATDATA;typedef struct _DDHAL_GETVPORTFIELDDATA *LPDDHAL_GETVPORTFIELDDATA;typedef struct _DDHAL_GETVPORTLINEDATA *LPDDHAL_GETVPORTLINEDATA;typedef struct _DDHAL_DESTROYVPORTDATA *LPDDHAL_DESTROYVPORTDATA;typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA *LPDDHAL_GETVPORTFLIPSTATUSDATA;typedef struct _DDHAL_UPDATEVPORTDATA *LPDDHAL_UPDATEVPORTDATA;typedef struct _DDHAL_WAITFORVPORTSYNCDATA *LPDDHAL_WAITFORVPORTSYNCDATA;typedef struct _DDHAL_GETVPORTSIGNALDATA *LPDDHAL_GETVPORTSIGNALDATA;typedef struct _DDHAL_VPORTCOLORDATA *LPDDHAL_VPORTCOLORDATA;
typedef DWORD (PASCAL *LPDDHALVPORTCB_CANCREATEVIDEOPORT)(LPDDHAL_CANCREATEVPORTDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_CREATEVIDEOPORT)(LPDDHAL_CREATEVPORTDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_FLIP)(LPDDHAL_FLIPVPORTDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_GETBANDWIDTH)(LPDDHAL_GETVPORTBANDWIDTHDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_GETINPUTFORMATS)(LPDDHAL_GETVPORTINPUTFORMATDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_GETOUTPUTFORMATS)(LPDDHAL_GETVPORTOUTPUTFORMATDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFIELD)(LPDDHAL_GETVPORTFIELDDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_GETLINE)(LPDDHAL_GETVPORTLINEDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_GETVPORTCONNECT)(LPDDHAL_GETVPORTCONNECTDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_DESTROYVPORT)(LPDDHAL_DESTROYVPORTDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFLIPSTATUS)(LPDDHAL_GETVPORTFLIPSTATUSDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_UPDATE)(LPDDHAL_UPDATEVPORTDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_WAITFORSYNC)(LPDDHAL_WAITFORVPORTSYNCDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_GETSIGNALSTATUS)(LPDDHAL_GETVPORTSIGNALDATA);typedef DWORD (PASCAL *LPDDHALVPORTCB_COLORCONTROL)(LPDDHAL_VPORTCOLORDATA);
typedef struct _DDHAL_DDVIDEOPORTCALLBACKS { DWORD dwSize; DWORD dwFlags; LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort; LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort; LPDDHALVPORTCB_FLIP FlipVideoPort; LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth; LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats; LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats; LPVOID lpReserved1; LPDDHALVPORTCB_GETFIELD GetVideoPortField; LPDDHALVPORTCB_GETLINE GetVideoPortLine; LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo; LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort; LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus; LPDDHALVPORTCB_UPDATE UpdateVideoPort; LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync; LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus; LPDDHALVPORTCB_COLORCONTROL ColorControl;} DDHAL_DDVIDEOPORTCALLBACKS;
typedef struct _DDHAL_COLORCONTROLDATA *LPDDHAL_COLORCONTROLDATA;
typedef DWORD (PASCAL *LPDDHALCOLORCB_COLORCONTROL)(LPDDHAL_COLORCONTROLDATA);
typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS { DWORD dwSize; DWORD dwFlags; LPDDHALCOLORCB_COLORCONTROL ColorControl;} DDHAL_DDCOLORCONTROLCALLBACKS;
typedef struct _DDHAL_SYNCSURFACEDATA *LPDDHAL_SYNCSURFACEDATA;typedef struct _DDHAL_SYNCVIDEOPORTDATA *LPDDHAL_SYNCVIDEOPORTDATA;
typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCSURFACE)(LPDDHAL_SYNCSURFACEDATA);typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCVIDEOPORT)(LPDDHAL_SYNCVIDEOPORTDATA);
typedef struct _DDHAL_DDKERNELCALLBACKS { DWORD dwSize; DWORD dwFlags; LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData; LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData;} DDHAL_DDKERNELCALLBACKS, *LPDDHAL_DDKERNELCALLBACKS;
typedef struct _DDHAL_GETMOCOMPGUIDSDATA *LPDDHAL_GETMOCOMPGUIDSDATA;typedef struct _DDHAL_GETMOCOMPFORMATSDATA *LPDDHAL_GETMOCOMPFORMATSDATA;typedef struct _DDHAL_CREATEMOCOMPDATA *LPDDHAL_CREATEMOCOMPDATA;typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA *LPDDHAL_GETMOCOMPCOMPBUFFDATA;typedef struct _DDHAL_GETINTERNALMOCOMPDATA *LPDDHAL_GETINTERNALMOCOMPDATA;typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA *LPDDHAL_BEGINMOCOMPFRAMEDATA;typedef struct _DDHAL_ENDMOCOMPFRAMEDATA *LPDDHAL_ENDMOCOMPFRAMEDATA;typedef struct _DDHAL_RENDERMOCOMPDATA *LPDDHAL_RENDERMOCOMPDATA;typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA *LPDDHAL_QUERYMOCOMPSTATUSDATA;typedef struct _DDHAL_DESTROYMOCOMPDATA *LPDDHAL_DESTROYMOCOMPDATA;
typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETGUIDS)(LPDDHAL_GETMOCOMPGUIDSDATA);typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETFORMATS)(LPDDHAL_GETMOCOMPFORMATSDATA);typedef DWORD (PASCAL *LPDDHALMOCOMPCB_CREATE)(LPDDHAL_CREATEMOCOMPDATA);typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETCOMPBUFFINFO)(LPDDHAL_GETMOCOMPCOMPBUFFDATA);typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETINTERNALINFO)(LPDDHAL_GETINTERNALMOCOMPDATA);typedef DWORD (PASCAL *LPDDHALMOCOMPCB_BEGINFRAME)(LPDDHAL_BEGINMOCOMPFRAMEDATA);typedef DWORD (PASCAL *LPDDHALMOCOMPCB_ENDFRAME)(LPDDHAL_ENDMOCOMPFRAMEDATA);typedef DWORD (PASCAL *LPDDHALMOCOMPCB_RENDER)(LPDDHAL_RENDERMOCOMPDATA);typedef DWORD (PASCAL *LPDDHALMOCOMPCB_QUERYSTATUS)(LPDDHAL_QUERYMOCOMPSTATUSDATA);typedef DWORD (PASCAL *LPDDHALMOCOMPCB_DESTROY)(LPDDHAL_DESTROYMOCOMPDATA);
typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS { DWORD dwSize; DWORD dwFlags; LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids; LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats; LPDDHALMOCOMPCB_CREATE CreateMoComp; LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo; LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo; LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame; LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame; LPDDHALMOCOMPCB_RENDER RenderMoComp; LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus; LPDDHALMOCOMPCB_DESTROY DestroyMoComp;} DDHAL_DDMOTIONCOMPCALLBACKS, *LPDDHAL_DDMOTIONCOMPCALLBACKS;
typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE);
/***************************************************************************** * driver info structure * * The HAL is queried for additional callbacks via the GetDriverInfo callback. */typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA;typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA);
typedef struct _DDHAL_GETDRIVERINFODATA { DWORD dwSize; DWORD dwFlags; GUID guidInfo; DWORD dwExpectedSize; LPVOID lpvData; DWORD dwActualSize; HRESULT ddRVal; ULONG_PTR dwContext;} DDHAL_GETDRIVERINFODATA;
typedef struct _DDHALINFO { DWORD dwSize; LPDDHAL_DDCALLBACKS lpDDCallbacks; LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks; LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks; VIDMEMINFO vmiData; DDCORECAPS ddCaps; DWORD dwMonitorFrequency; LPDDHAL_GETDRIVERINFO GetDriverInfo; DWORD dwModeIndex; LPDWORD lpdwFourCC; DWORD dwNumModes; LPDDHALMODEINFO lpModeInfo; DWORD dwFlags; LPVOID lpPDevice; DWORD hInstance; /* DirectX 2 */ ULONG_PTR lpD3DGlobalDriverData; ULONG_PTR lpD3DHALCallbacks; LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks;} DDHALINFO;
#define DDPALETTECALLBACKSSIZE sizeof(DDHAL_DDPALETTECALLBACKS)#define DDSURFACECALLBACKSSIZE sizeof(DDHAL_DDSURFACECALLBACKS)#define DDMISCELLANEOUSCALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS)#define DDMISCELLANEOUS2CALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUS2CALLBACKS)#define DDEXEBUFCALLBACKSSIZE sizeof(DDHAL_DDEXEBUFCALLBACKS)#define DDVIDEOPORTCALLBACKSSIZE sizeof(DDHAL_DDVIDEOPORTCALLBACKS)#define DDCOLORCONTROLCALLBACKSSIZE sizeof(DDHAL_DDCOLORCONTROLCALLBACKS)#define DDKERNELCALLBACKSSIZE sizeof(DDHAL_DDKERNELCALLBACKS)#define DDMOTIONCOMPCALLBACKSSIZE sizeof(DDHAL_DDMOTIONCOMPCALLBACKS)
#define MAX_PALETTE_SIZE 256
#define MAX_AUTOFLIP_BUFFERS 10#define DDSCAPS2_INDEXBUFFER DDSCAPS2_RESERVED3#define DDSCAPS3_VIDEO DDSCAPS3_RESERVED2#define D3DFMT_INTERNAL_D32 71#define D3DFMT_INTERNAL_S1D15 72#define D3DFMT_INTERNAL_D15S1 73#define D3DFMT_INTERNAL_S8D24 74#define D3DFMT_INTERNAL_D24S8 75#define D3DFMT_INTERNAL_X8D24 76#define D3DFMT_INTERNAL_D24X8 77#define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l#define DDHAL_PLEASEALLOC_LINEARSIZE 0x00000003l
#define DDHAL_CB32_DESTROYDRIVER 0x00000001l#define DDHAL_CB32_CREATESURFACE 0x00000002l#define DDHAL_CB32_SETCOLORKEY 0x00000004l#define DDHAL_CB32_SETMODE 0x00000008l#define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l#define DDHAL_CB32_CANCREATESURFACE 0x00000020l#define DDHAL_CB32_CREATEPALETTE 0x00000040l#define DDHAL_CB32_GETSCANLINE 0x00000080l#define DDHAL_CB32_SETEXCLUSIVEMODE 0x00000100l#define DDHAL_CB32_FLIPTOGDISURFACE 0x00000200l#define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l#define DDHAL_PALCB32_SETENTRIES 0x00000002l#define DDHALINFO_ISPRIMARYDISPLAY 0x00000001#define DDHALINFO_MODEXILLEGAL 0x00000002#define DDHALINFO_GETDRIVERINFOSET 0x00000004#define DDHALINFO_GETDRIVERINFO2 0x00000008#define DDRAWI_VPORTSTART 0x0001#define DDRAWI_VPORTSTOP 0x0002#define DDRAWI_VPORTUPDATE 0x0003#define DDRAWI_VPORTGETCOLOR 0x0001#define DDRAWI_VPORTSETCOLOR 0x0002#define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001#define DDHAL_SURFCB32_FLIP 0x00000002#define DDHAL_SURFCB32_SETCLIPLIST 0x00000004#define DDHAL_SURFCB32_LOCK 0x00000008#define DDHAL_SURFCB32_UNLOCK 0x00000010#define DDHAL_SURFCB32_BLT 0x00000020#define DDHAL_SURFCB32_SETCOLORKEY 0x00000040#define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080#define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100#define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200#define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400#define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800#define DDHAL_SURFCB32_RESERVED4 0x00001000#define DDHAL_SURFCB32_SETPALETTE 0x00002000#define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001#define DDHAL_MISCCB32_UPDATENONLOCALHEAP 0x00000002#define DDHAL_MISCCB32_GETHEAPALIGNMENT 0x00000004#define DDHAL_MISCCB32_GETSYSMEMBLTSTATUS 0x00000008#define DDHAL_MISC2CB32_ALPHABLT 0x00000001#define DDHAL_MISC2CB32_CREATESURFACEEX 0x00000002#define DDHAL_MISC2CB32_GETDRIVERSTATE 0x00000004#define DDHAL_MISC2CB32_DESTROYDDLOCAL 0x00000008#define DDHAL_EXEBUFCB32_CANCREATEEXEBUF 0x00000001l#define DDHAL_EXEBUFCB32_CREATEEXEBUF 0x00000002l#define DDHAL_EXEBUFCB32_DESTROYEXEBUF 0x00000004l#define DDHAL_EXEBUFCB32_LOCKEXEBUF 0x00000008l#define DDHAL_EXEBUFCB32_UNLOCKEXEBUF 0x00000010l#define DDHAL_VPORT32_CANCREATEVIDEOPORT 0x00000001#define DDHAL_VPORT32_CREATEVIDEOPORT 0x00000002#define DDHAL_VPORT32_FLIP 0x00000004#define DDHAL_VPORT32_GETBANDWIDTH 0x00000008#define DDHAL_VPORT32_GETINPUTFORMATS 0x00000010#define DDHAL_VPORT32_GETOUTPUTFORMATS 0x00000020#define DDHAL_VPORT32_GETFIELD 0x00000080#define DDHAL_VPORT32_GETLINE 0x00000100#define DDHAL_VPORT32_GETCONNECT 0x00000200#define DDHAL_VPORT32_DESTROY 0x00000400#define DDHAL_VPORT32_GETFLIPSTATUS 0x00000800#define DDHAL_VPORT32_UPDATE 0x00001000#define DDHAL_VPORT32_WAITFORSYNC 0x00002000#define DDHAL_VPORT32_GETSIGNALSTATUS 0x00004000#define DDHAL_VPORT32_COLORCONTROL 0x00008000#define DDHAL_COLOR_COLORCONTROL 0x00000001#define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001l#define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002l#define DDHAL_MOCOMP32_GETGUIDS 0x00000001#define DDHAL_MOCOMP32_GETFORMATS 0x00000002#define DDHAL_MOCOMP32_CREATE 0x00000004#define DDHAL_MOCOMP32_GETCOMPBUFFINFO 0x00000008#define DDHAL_MOCOMP32_GETINTERNALINFO 0x00000010#define DDHAL_MOCOMP32_BEGINFRAME 0x00000020#define DDHAL_MOCOMP32_ENDFRAME 0x00000040#define DDHAL_MOCOMP32_RENDER 0x00000080#define DDHAL_MOCOMP32_QUERYSTATUS 0x00000100#define DDHAL_MOCOMP32_DESTROY 0x00000200
/* where the high-level ddraw implementation stores the callbacks */typedef struct _DDHAL_CALLBACKS { DDHAL_DDCALLBACKS cbDDCallbacks; DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks; DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks; DDHAL_DDCALLBACKS HALDD; DDHAL_DDSURFACECALLBACKS HALDDSurface; DDHAL_DDPALETTECALLBACKS HALDDPalette; DDHAL_DDCALLBACKS HELDD; DDHAL_DDSURFACECALLBACKS HELDDSurface; DDHAL_DDPALETTECALLBACKS HELDDPalette; DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks; DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf; DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf; DDHAL_DDVIDEOPORTCALLBACKS cbDDVideoPortCallbacks; DDHAL_DDVIDEOPORTCALLBACKS HALDDVideoPort; DDHAL_DDCOLORCONTROLCALLBACKS cbDDColorControlCallbacks; DDHAL_DDCOLORCONTROLCALLBACKS HALDDColorControl; DDHAL_DDMISCELLANEOUSCALLBACKS cbDDMiscellaneousCallbacks; DDHAL_DDMISCELLANEOUSCALLBACKS HALDDMiscellaneous; DDHAL_DDKERNELCALLBACKS cbDDKernelCallbacks; DDHAL_DDKERNELCALLBACKS HALDDKernel; DDHAL_DDMOTIONCOMPCALLBACKS cbDDMotionCompCallbacks; DDHAL_DDMOTIONCOMPCALLBACKS HALDDMotionComp;} DDHAL_CALLBACKS, *LPDDHAL_CALLBACKS;
/***************************************************************************** * parameter structures */typedef struct _DDHAL_DESTROYDRIVERDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; HRESULT ddRVal; LPDDHAL_DESTROYDRIVER DestroyDriver;} DDHAL_DESTROYDRIVERDATA;
typedef struct _DDHAL_SETMODEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; DWORD dwModeIndex; HRESULT ddRVal; LPDDHAL_SETMODE SetMode; BOOL inexcl; BOOL useRefreshRate;} DDHAL_SETMODEDATA;
typedef struct _DDHAL_CREATESURFACEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDSURFACEDESC lpDDSurfaceDesc; LPDDRAWI_DDRAWSURFACE_LCL *lplpSList; DWORD dwSCnt; HRESULT ddRVal; LPDDHAL_CREATESURFACE CreateSurface;} DDHAL_CREATESURFACEDATA;
typedef struct _DDHAL_CANCREATESURFACEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDSURFACEDESC lpDDSurfaceDesc; DWORD bIsDifferentPixelFormat; HRESULT ddRVal; LPDDHAL_CANCREATESURFACE CanCreateSurface;} DDHAL_CANCREATESURFACEDATA;
typedef struct _DDHAL_CREATEPALETTEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; LPPALETTEENTRY lpColorTable; HRESULT ddRVal; LPDDHAL_CREATEPALETTE CreatePalette; BOOL is_excl;} DDHAL_CREATEPALETTEDATA;
typedef struct _DDHAL_SETEXCLUSIVEMODEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; DWORD dwEnterExcl; DWORD dwReserved; HRESULT ddRVal; LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;} DDHAL_SETEXCLUSIVEMODEDATA;
/* surfaces */typedef struct _DDHAL_DESTROYSURFACEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; HRESULT ddRVal; LPDDHALSURFCB_DESTROYSURFACE DestroySurface;} DDHAL_DESTROYSURFACEDATA;
typedef struct _DDHAL_FLIPDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr; LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg; DWORD dwFlags; HRESULT ddRVal; LPDDHALSURFCB_FLIP Flip; LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft; LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft;} DDHAL_FLIPDATA;
typedef struct _DDHAL_LOCKDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; DWORD bHasRect; RECTL rArea; LPVOID lpSurfData; HRESULT ddRVal; LPDDHALSURFCB_LOCK Lock; DWORD dwFlags;} DDHAL_LOCKDATA;
typedef struct _DDHAL_UNLOCKDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; HRESULT ddRVal; LPDDHALSURFCB_UNLOCK Unlock;} DDHAL_UNLOCKDATA;
typedef struct _DDHAL_BLTDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; RECTL rDest; LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; RECTL rSrc; DWORD dwFlags; DWORD dwROPFlags; DDBLTFX bltFX; HRESULT ddRVal; LPDDHALSURFCB_BLT Blt; BOOL IsClipped; RECTL rOrigDest; RECTL rOrigSrc; DWORD dwRectCnt; LPRECT prDestRects;} DDHAL_BLTDATA;
typedef struct _DDHAL_SETPALETTEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; HRESULT ddRVal; LPDDHALSURFCB_SETPALETTE SetPalette; BOOL Attach;} DDHAL_SETPALETTEDATA;
/* palettes */typedef struct _DDHAL_DESTROYPALETTEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; HRESULT ddRVal; LPDDHALPALCB_DESTROYPALETTE DestroyPalette;} DDHAL_DESTROYPALETTEDATA;
typedef struct _DDHAL_SETENTRIESDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; DWORD dwBase; DWORD dwNumEntries; LPPALETTEENTRY lpEntries; HRESULT ddRVal; LPDDHALPALCB_SETENTRIES SetEntries;} DDHAL_SETENTRIESDATA;
typedef struct _DDHAL_CANCREATEVPORTDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDVIDEOPORTDESC lpDDVideoPortDesc; HRESULT ddRVal; LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort;} DDHAL_CANCREATEVPORTDATA;
typedef struct _DDHAL_CREATEVPORTDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDVIDEOPORTDESC lpDDVideoPortDesc; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; HRESULT ddRVal; LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort;} DDHAL_CREATEVPORTDATA;
typedef struct _DDHAL_GETVPORTBANDWIDTHDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; LPDDPIXELFORMAT lpddpfFormat; DWORD dwWidth; DWORD dwHeight; DWORD dwFlags; LPDDVIDEOPORTBANDWIDTH lpBandwidth; HRESULT ddRVal; LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth;} DDHAL_GETVPORTBANDWIDTHDATA;
typedef struct _DDHAL_GETVPORTINPUTFORMATDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; DWORD dwFlags; LPDDPIXELFORMAT lpddpfFormat; DWORD dwNumFormats; HRESULT ddRVal; LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats;} DDHAL_GETVPORTINPUTFORMATDATA;
typedef struct _DDHAL_GETVPORTFIELDDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; BOOL bField; HRESULT ddRVal; LPDDHALVPORTCB_GETFIELD GetVideoPortField;} DDHAL_GETVPORTFIELDDATA;
typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; DWORD dwFlags; LPDDPIXELFORMAT lpddpfInputFormat; LPDDPIXELFORMAT lpddpfOutputFormats; DWORD dwNumFormats; HRESULT ddRVal; LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats;} DDHAL_GETVPORTOUTPUTFORMATDATA;
typedef struct _DDHAL_GETVPORTLINEDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; DWORD dwLine; HRESULT ddRVal; LPDDHALVPORTCB_GETLINE GetVideoPortLine;} DDHAL_GETVPORTLINEDATA;
typedef struct _DDHAL_DESTROYVPORTDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; HRESULT ddRVal; LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort;} DDHAL_DESTROYVPORTDATA;
typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; FLATPTR fpSurface; HRESULT ddRVal; LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus;} DDHAL_GETVPORTFLIPSTATUSDATA;
typedef struct _DDHAL_UPDATEVPORTDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; LPDDRAWI_DDRAWSURFACE_INT *lplpDDSurface; LPDDRAWI_DDRAWSURFACE_INT *lplpDDVBISurface; LPDDVIDEOPORTINFO lpVideoInfo; DWORD dwFlags; DWORD dwNumAutoflip; DWORD dwNumVBIAutoflip; HRESULT ddRVal; LPDDHALVPORTCB_UPDATE UpdateVideoPort;} DDHAL_UPDATEVPORTDATA;
typedef struct _DDHAL_WAITFORVPORTSYNCDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; DWORD dwFlags; DWORD dwLine; DWORD dwTimeOut; HRESULT ddRVal; LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync;} DDHAL_WAITFORVPORTSYNCDATA;
typedef struct _DDHAL_GETVPORTSIGNALDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; DWORD dwStatus; HRESULT ddRVal; LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus;} DDHAL_GETVPORTSIGNALDATA;
typedef struct _DDHAL_VPORTCOLORDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; DWORD dwFlags; LPDDCOLORCONTROL lpColorData; HRESULT ddRVal; LPDDHALVPORTCB_COLORCONTROL ColorControl;} DDHAL_VPORTCOLORDATA;
typedef struct _DDHAL_FLIPVPORTDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr; LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg; HRESULT ddRVal; LPDDHALVPORTCB_FLIP FlipVideoPort;} DDHAL_FLIPVPORTDATA;
typedef struct _DDHAL_GETVPORTCONNECTDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; DWORD dwPortId; LPDDVIDEOPORTCONNECT lpConnect; DWORD dwNumEntries; HRESULT ddRVal; LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo;} DDHAL_GETVPORTCONNECTDATA;
typedef struct _DDHAL_SYNCSURFACEDATA { DWORD dwSize; LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; DWORD dwSurfaceOffset; ULONG_PTR fpLockPtr; LONG lPitch; DWORD dwOverlayOffset; DWORD dwOverlaySrcWidth; DWORD dwOverlaySrcHeight; DWORD dwOverlayDestWidth; DWORD dwOverlayDestHeight; ULONG_PTR dwDriverReserved1; ULONG_PTR dwDriverReserved2; ULONG_PTR dwDriverReserved3; HRESULT ddRVal;} DDHAL_SYNCSURFACEDATA;
typedef struct _DDHAL_SYNCVIDEOPORTDATA { DWORD dwSize; LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; DWORD dwOriginOffset; DWORD dwHeight; DWORD dwVBIHeight; ULONG_PTR dwDriverReserved1; ULONG_PTR dwDriverReserved2; ULONG_PTR dwDriverReserved3; HRESULT ddRVal;} DDHAL_SYNCVIDEOPORTDATA;
typedef struct _DDHAL_DESTROYDDLOCALDATA { DWORD dwFlags; LPDDRAWI_DIRECTDRAW_LCL pDDLcl; HRESULT ddRVal;} DDHAL_DESTROYDDLOCALDATA;
typedef struct _DDHAL_CREATESURFACEEXDATA { DWORD dwFlags; LPDDRAWI_DIRECTDRAW_LCL lpDDLcl; LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; HRESULT ddRVal;} DDHAL_CREATESURFACEEXDATA;
typedef struct _DDHAL_GETHEAPALIGNMENTDATA { ULONG_PTR dwInstance; DWORD dwHeap; HRESULT ddRVal; LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment; HEAPALIGNMENT Alignment;} DDHAL_GETHEAPALIGNMENTDATA;
typedef struct _DDMORESURFACECAPS { DWORD dwSize; DDSCAPSEX ddsCapsMore; struct tagExtendedHeapRestrictions { DDSCAPSEX ddsCapsEx; DDSCAPSEX ddsCapsExAlt; } ddsExtendedHeapRestrictions[1];} DDMORESURFACECAPS, *LPDDMORESURFACECAPS;
typedef struct _DDSTEREOMODE { DWORD dwSize; DWORD dwHeight; DWORD dwWidth; DWORD dwBpp; DWORD dwRefreshRate; BOOL bSupported;} DDSTEREOMODE, *LPDDSTEREOMODE;
/***************************************************************************** * high-level ddraw implementation structures */typedef struct _IUNKNOWN_LIST { struct _IUNKNOWN_LIST *lpLink; LPGUID lpGuid;#ifndef _NO_COM IUnknown *lpIUnknown;#else LPVOID lpIUnknown;#endif /* _NO_COM */} IUNKNOWN_LIST, *LPIUNKNOWN_LIST;
typedef struct _PROCESS_LIST { struct _PROCESS_LIST *lpLink; DWORD dwProcessId; DWORD dwRefCnt; DWORD dwAlphaDepth; DWORD dwZDepth;} PROCESS_LIST, *LPPROCESS_LIST;
typedef struct _ATTACHLIST { DWORD dwFlags; struct _ATTACHLIST *lpLink; LPDDRAWI_DDRAWSURFACE_LCL lpAttached; LPDDRAWI_DDRAWSURFACE_INT lpIAttached;} ATTACHLIST, *LPATTACHLIST;
#define DDAL_IMPLICIT 0x00000001
typedef struct _ACCESSRECTLIST { struct _ACCESSRECTLIST *lpLink; RECT rDest; LPDDRAWI_DIRECTDRAW_LCL lpOwner; LPVOID lpSurfaceData; DWORD dwFlags; LPHEAPALIASINFO lpHeapAliasInfo;} ACCESSRECTLIST, *LPACCESSRECTLIST;
#define ACCESSRECT_VRAMSTYLE 0x00000001#define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002#define ACCESSRECT_BROKEN 0x00000004
typedef struct _DBLNODE { struct _DBLNODE *next; struct _DBLNODE *prev; LPDDRAWI_DDRAWSURFACE_LCL object; LPDDRAWI_DDRAWSURFACE_INT object_int;} DBLNODE, *LPDBLNODE;
typedef struct _DDRAWI_DIRECTDRAW_INT { LPVOID lpVtbl; LPDDRAWI_DIRECTDRAW_LCL lpLcl; LPDDRAWI_DIRECTDRAW_INT lpLink; DWORD dwIntRefCnt;} DDRAWI_DIRECTDRAW_INT;
typedef struct _DDRAWI_DIRECTDRAW_LCL { DWORD lpDDMore; LPDDRAWI_DIRECTDRAW_GBL lpGbl; DWORD dwUnused0; DWORD dwLocalFlags; DWORD dwLocalRefCnt; DWORD dwProcessId;#ifndef _NO_COM IUnknown *pUnkOuter;#else PVOID pUnkOuter;#endif DWORD dwObsolete1; ULONG_PTR hWnd; ULONG_PTR hDC; DWORD dwErrorMode; LPDDRAWI_DDRAWSURFACE_INT lpPrimary; LPDDRAWI_DDRAWSURFACE_INT lpCB; DWORD dwPreferredMode; /* DirectX 2 */ HINSTANCE hD3DInstance;#ifndef _NO_COM IUnknown *pD3DIUnknown;#else PVOID pD3DIUnknown;#endif LPDDHAL_CALLBACKS lpDDCB; ULONG_PTR hDDVxd; /* DirectX 5.0 */ DWORD dwAppHackFlags; /* DirectX 5.0A */ ULONG_PTR hFocusWnd; DWORD dwHotTracking; DWORD dwIMEState; /* DirectX 6.0 */ ULONG_PTR hWndPopup; ULONG_PTR hDD; ULONG_PTR hGammaCalibrator; LPDDGAMMACALIBRATORPROC lpGammaCalibrator;} DDRAWI_DIRECTDRAW_LCL;
#define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001#define DDRAWILCL_ISFULLSCREEN 0x00000002#define DDRAWILCL_SETCOOPCALLED 0x00000004#define DDRAWILCL_ACTIVEYES 0x00000008#define DDRAWILCL_ACTIVENO 0x00000010#define DDRAWILCL_HOOKEDHWND 0x00000020#define DDRAWILCL_ALLOWMODEX 0x00000040#define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080#define DDRAWILCL_MODEHASBEENCHANGED 0x00000100#define DDRAWILCL_CREATEDWINDOW 0x00000200#define DDRAWILCL_DIRTYDC 0x00000400#define DDRAWILCL_DISABLEINACTIVATE 0x00000800#define DDRAWILCL_CURSORCLIPPED 0x00001000#define DDRAWILCL_EXPLICITMONITOR 0x00002000#define DDRAWILCL_MULTITHREADED 0x00004000#define DDRAWILCL_FPUSETUP 0x00008000#define DDRAWILCL_POWEREDDOWN 0x00010000#define DDRAWILCL_DIRECTDRAW7 0x00020000#define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000#define DDRAWILCL_FPUPRESERVE 0x00080000#define DDRAWILCL_DX8DRIVER 0x00100000#define DDRAWILCL_DIRECTDRAW8 0x00200000
typedef struct _DDRAWI_DIRECTDRAW_GBL { DWORD dwRefCnt; DWORD dwFlags; FLATPTR fpPrimaryOrig; DDCORECAPS ddCaps; DWORD dwInternal1; DWORD dwUnused1[9]; LPDDHAL_CALLBACKS lpDDCBtmp; LPDDRAWI_DDRAWSURFACE_INT dsList; LPDDRAWI_DDRAWPALETTE_INT palList; LPDDRAWI_DDRAWCLIPPER_INT clipperList; LPDDRAWI_DIRECTDRAW_GBL lp16DD; DWORD dwMaxOverlays; DWORD dwCurrOverlays; DWORD dwMonitorFrequency; DDCORECAPS ddHELCaps; DWORD dwUnused2[50]; DDCOLORKEY ddckCKDestOverlay; DDCOLORKEY ddckCKSrcOverlay; VIDMEMINFO vmiData; LPVOID lpDriverHandle; LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner; DWORD dwModeIndex; DWORD dwModeIndexOrig; DWORD dwNumFourCC; LPDWORD lpdwFourCC; DWORD dwNumModes; LPDDHALMODEINFO lpModeInfo; PROCESS_LIST plProcessList; DWORD dwSurfaceLockCount; DWORD dwAliasedLockCnt; ULONG_PTR dwReserved3; ULONG_PTR hDD; char cObsolete[12]; DWORD dwReserved1; DWORD dwReserved2; DBLNODE dbnOverlayRoot; volatile LPWORD lpwPDeviceFlags; DWORD dwPDevice; DWORD dwWin16LockCnt; DWORD dwUnused3; DWORD hInstance; DWORD dwEvent16; DWORD dwSaveNumModes; /* DirectX 2 */ ULONG_PTR lpD3DGlobalDriverData; ULONG_PTR lpD3DHALCallbacks; DDCORECAPS ddBothCaps; /* DirectX 5.0 */ LPDDVIDEOPORTCAPS lpDDVideoPortCaps; LPDDRAWI_DDVIDEOPORT_INT dvpList; ULONG_PTR lpD3DHALCallbacks2; RECT rectDevice; DWORD cMonitors; LPVOID gpbmiSrc; LPVOID gpbmiDest; LPHEAPALIASINFO phaiHeapAliases; ULONG_PTR hKernelHandle; ULONG_PTR pfnNotifyProc; LPDDKERNELCAPS lpDDKernelCaps; LPDDNONLOCALVIDMEMCAPS lpddNLVCaps; LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps; LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps; ULONG_PTR lpD3DExtendedCaps; /* DirectX 5.0A */ DWORD dwDOSBoxEvent; RECT rectDesktop; char cDriverName[MAX_DRIVER_NAME]; /* DirectX 6.0 */ ULONG_PTR lpD3DHALCallbacks3; DWORD dwNumZPixelFormats; LPDDPIXELFORMAT lpZPixelFormats; LPDDRAWI_DDMOTIONCOMP_INT mcList; DWORD hDDVxd; DDSCAPSEX ddsCapsMore;} DDRAWI_DIRECTDRAW_GBL;
#define DDRAWI_xxxxxxxxx1 0x00000001#define DDRAWI_xxxxxxxxx2 0x00000002#define DDRAWI_VIRTUALDESKTOP 0x00000008#define DDRAWI_MODEX 0x00000010#define DDRAWI_DISPLAYDRV 0x00000020#define DDRAWI_FULLSCREEN 0x00000040#define DDRAWI_MODECHANGED 0x00000080#define DDRAWI_NOHARDWARE 0x00000100#define DDRAWI_PALETTEINIT 0x00000200#define DDRAWI_NOEMULATION 0x00000400#define DDRAWI_HASCKEYDESTOVERLAY 0x00000800#define DDRAWI_HASCKEYSRCOVERLAY 0x00001000#define DDRAWI_HASGDIPALETTE 0x00002000#define DDRAWI_EMULATIONINITIALIZED 0x00004000#define DDRAWI_HASGDIPALETTE_EXCLUSIVE 0x00008000#define DDRAWI_MODEXILLEGAL 0x00010000#define DDRAWI_FLIPPEDTOGDI 0x00020000#define DDRAWI_NEEDSWIN16FORVRAMLOCK 0x00040000#define DDRAWI_PDEVICEVRAMBITCLEARED 0x00080000#define DDRAWI_STANDARDVGA 0x00100000#define DDRAWI_EXTENDEDALIGNMENT 0x00200000#define DDRAWI_CHANGINGMODE 0x00400000#define DDRAWI_GDIDRV 0x00800000#define DDRAWI_ATTACHEDTODESKTOP 0x01000000#define DDRAWI_UMODELOADED 0x02000000#define DDRAWI_DDRAWDATANOTFETCHED 0x04000000#define DDRAWI_SECONDARYDRIVERLOADED 0x08000000#define DDRAWI_TESTINGMODES 0x10000000#define DDRAWI_DRIVERINFO2 0x20000000#define DDRAWI_BADPDEV 0x40000000
/* surfaces */typedef struct _DDRAWI_DDRAWSURFACE_INT { LPVOID lpVtbl; LPDDRAWI_DDRAWSURFACE_LCL lpLcl; LPDDRAWI_DDRAWSURFACE_INT lpLink; DWORD dwIntRefCnt;} DDRAWI_DDRAWSURFACE_INT;
typedef struct _DDRAWI_DDRAWSURFACE_GBL { DWORD dwRefCnt; DWORD dwGlobalFlags; __GNU_EXTENSION union { LPACCESSRECTLIST lpRectList; DWORD dwBlockSizeY; LONG lSlicePitch; }; __GNU_EXTENSION union { LPVMEMHEAP lpVidMemHeap; DWORD dwBlockSizeX; }; __GNU_EXTENSION union { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPVOID lpDDHandle; }; FLATPTR fpVidMem; __GNU_EXTENSION union { LONG lPitch; DWORD dwLinearSize; }; WORD wHeight; WORD wWidth; DWORD dwUsageCount; ULONG_PTR dwReserved1; DDPIXELFORMAT ddpfSurface;} DDRAWI_DDRAWSURFACE_GBL;
#define DDRAWISURFGBL_MEMFREE 0x00000001L#define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002L#define DDRAWISURFGBL_ISGDISURFACE 0x00000004L#define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008L#define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010L#define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020L#define DDRAWISURFGBL_LOCKBROKEN 0x00000040L#define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080L#define DDRAWISURFGBL_ISCLIENTMEM 0x00000100L#define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200L#define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400L#define DDRAWISURFGBL_HARDWAREOPSTARTED (DDRAWISURFGBL_HARDWAREOPSOURCE|DDRAWISURFGBL_HARDWAREOPDEST)#define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800L#define DDRAWISURFGBL_VPORTDATA 0x00001000L#define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000L#define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000L#define DDRAWISURFGBL_FASTLOCKHELD 0x00008000L#define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000L#define DDRAWISURFGBL_DX8SURFACE 0x00080000L#define DDRAWISURFGBL_DDHELDONTFREE 0x00100000L#define DDRAWISURFGBL_NOTIFYWHENUNLOCKED 0x00200000L#define DDRAWISURFGBL_RESERVED0 0x80000000L // Reserved flag
typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE { DWORD dwSize; __GNU_EXTENSION union { DWORD dwPhysicalPageTable; FLATPTR fpPhysicalVidMem; }; LPDWORD pPageTable; DWORD cPages; ULONG_PTR dwSavedDCContext; FLATPTR fpAliasedVidMem; ULONG_PTR dwDriverReserved; ULONG_PTR dwHELReserved; DWORD cPageUnlocks; ULONG_PTR hKernelSurface; DWORD dwKernelRefCnt; LPDDCOLORCONTROL lpColorInfo; FLATPTR fpNTAlias; DWORD dwContentsStamp; LPVOID lpvUnswappedDriverReserved; LPVOID lpDDRAWReserved2; DWORD dwDDRAWReserved1; DWORD dwDDRAWReserved2; FLATPTR fpAliasOfVidMem;} DDRAWI_DDRAWSURFACE_GBL_MORE;
/* the MS version of this macro was somewhat obfuscated and unreadable * (possibly because of mediocre MS coders)... so I simplified it... * (and so I commit no copyright violations either, hah) */#define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \ (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
#define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \ ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem )
typedef struct _DISPLAYMODEINFO { WORD wWidth; WORD wHeight; BYTE wBPP; BYTE wMonitorsAttachedToDesktop; WORD wRefreshRate;} DISPLAYMODEINFO, *LPDISPLAYMODEINFO;
#define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO)))
typedef struct _DDRAWI_DDRAWSURFACE_MORE { DWORD dwSize; IUNKNOWN_LIST *lpIUnknowns; LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; DWORD dwPageLockCount; DWORD dwBytesAllocated; LPDDRAWI_DIRECTDRAW_INT lpDD_int; DWORD dwMipMapCount; LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper; /* DirectX 5.0 */ LPHEAPALIASINFO lpHeapAliasInfo; DWORD dwOverlayFlags; VOID *rgjunc; LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; LPDDOVERLAYFX lpddOverlayFX; DDSCAPSEX ddsCapsEx; DWORD dwTextureStage; LPVOID lpDDRAWReserved; LPVOID lpDDRAWReserved2; LPVOID lpDDrawReserved3; DWORD dwDDrawReserved4; LPVOID lpDDrawReserved5; LPDWORD lpGammaRamp; LPDWORD lpOriginalGammaRamp; LPVOID lpDDrawReserved6;# ifndef WIN95 DISPLAYMODEINFO dmiDDrawReserved7;# endif DWORD dwSurfaceHandle; DWORD qwDDrawReserved8[2]; LPVOID lpDDrawReserved9; DWORD cSurfaces; LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2; LPDDRAWI_DDRAWSURFACE_LCL *slist; DWORD dwFVF; LPVOID lpVB;} DDRAWI_DDRAWSURFACE_MORE;
typedef struct _DDRAWI_DDRAWSURFACE_LCL { LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore; LPDDRAWI_DDRAWSURFACE_GBL lpGbl; ULONG_PTR hDDSurface; LPATTACHLIST lpAttachList; LPATTACHLIST lpAttachListFrom; DWORD dwLocalRefCnt; DWORD dwProcessId; DWORD dwFlags; DDSCAPS ddsCaps; __GNU_EXTENSION union { LPDDRAWI_DDRAWPALETTE_INT lpDDPalette; LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette; }; __GNU_EXTENSION union { LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper; LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper; }; DWORD dwModeCreatedIn; DWORD dwBackBufferCount; DDCOLORKEY ddckCKDestBlt; DDCOLORKEY ddckCKSrcBlt; ULONG_PTR hDC; ULONG_PTR dwReserved1; DDCOLORKEY ddckCKSrcOverlay; DDCOLORKEY ddckCKDestOverlay; LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying; DBLNODE dbnOverlayNode; RECT rcOverlaySrc; RECT rcOverlayDest; DWORD dwClrXparent; DWORD dwAlpha; LONG lOverlayX; LONG lOverlayY;} DDRAWI_DDRAWSURFACE_LCL;
#define DDRAWISURF_ATTACHED 0x00000001L#define DDRAWISURF_IMPLICITCREATE 0x00000002L#define DDRAWISURF_ISFREE 0x00000004L#define DDRAWISURF_ATTACHED_FROM 0x00000008L#define DDRAWISURF_IMPLICITROOT 0x00000010L#define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L#define DDRAWISURF_DATAISALIASED 0x00000040L#define DDRAWISURF_HASDC 0x00000080L#define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L#define DDRAWISURF_HASCKEYDESTBLT 0x00000200L#define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400L#define DDRAWISURF_HASCKEYSRCBLT 0x00000800L#define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000L#define DDRAWISURF_HASPIXELFORMAT 0x00002000L#define DDRAWISURF_HASOVERLAYDATA 0x00004000L#define DDRAWISURF_SETGAMMA 0x00008000L#define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L#define DDRAWISURF_SW_CKEYDESTBLT 0x00020000L#define DDRAWISURF_SW_CKEYSRCOVERLAY 0x00040000L#define DDRAWISURF_SW_CKEYSRCBLT 0x00080000L#define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L#define DDRAWISURF_HW_CKEYDESTBLT 0x00200000L#define DDRAWISURF_HW_CKEYSRCOVERLAY 0x00400000L#define DDRAWISURF_HW_CKEYSRCBLT 0x00800000L#define DDRAWISURF_INMASTERSPRITELIST 0x01000000L#define DDRAWISURF_HELCB 0x02000000L#define DDRAWISURF_FRONTBUFFER 0x04000000L#define DDRAWISURF_BACKBUFFER 0x08000000L#define DDRAWISURF_INVALID 0x10000000L#define DDRAWISURF_DCIBUSY 0x20000000L#define DDRAWISURF_GETDCNULL 0x40000000L#define DDRAWISURF_STEREOSURFACELEFT 0x20000000L#define DDRAWISURF_DRIVERMANAGED 0x40000000L#define DDRAWISURF_DCILOCK 0x80000000L
/* palettes */typedef struct _DDRAWI_DDRAWPALETTE_INT { LPVOID lpVtbl; LPDDRAWI_DDRAWPALETTE_LCL lpLcl; LPDDRAWI_DDRAWPALETTE_INT lpLink; DWORD dwIntRefCnt;} DDRAWI_DDRAWPALETTE_INT;
typedef struct _DDRAWI_DDRAWPALETTE_GBL { DWORD dwRefCnt; DWORD dwFlags; LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; DWORD dwProcessId; LPPALETTEENTRY lpColorTable; __GNU_EXTENSION union { ULONG_PTR dwReserved1; HPALETTE hHELGDIPalette; }; DWORD dwDriverReserved; DWORD dwContentsStamp; DWORD dwSaveStamp; DWORD dwHandle;} DDRAWI_DDRAWPALETTE_GBL;
#define DDRAWIPAL_256 0x00000001#define DDRAWIPAL_16 0x00000002#define DDRAWIPAL_GDI 0x00000004#define DDRAWIPAL_STORED_8 0x00000008#define DDRAWIPAL_STORED_16 0x00000010#define DDRAWIPAL_STORED_24 0x00000020#define DDRAWIPAL_EXCLUSIVE 0x00000040#define DDRAWIPAL_INHEL 0x00000080#define DDRAWIPAL_DIRTY 0x00000100#define DDRAWIPAL_ALLOW256 0x00000200#define DDRAWIPAL_4 0x00000400#define DDRAWIPAL_2 0x00000800#define DDRAWIPAL_STORED_8INDEX 0x00001000#define DDRAWIPAL_ALPHA 0x00002000
#define D3DFORMAT_OP_TEXTURE 0x00000001L#define D3DFORMAT_OP_VOLUMETEXTURE 0x00000002L#define D3DFORMAT_OP_CUBETEXTURE 0x00000004L#define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET 0x00000008L#define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET 0x00000010L#define D3DFORMAT_OP_ZSTENCIL 0x00000040L#define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 0x00000080L#define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L#define D3DFORMAT_OP_DISPLAYMODE 0x00000400L#define D3DFORMAT_OP_3DACCELERATION 0x00000800L#define D3DFORMAT_OP_PIXELSIZE 0x00001000L#define D3DFORMAT_OP_CONVERT_TO_ARGB 0x00002000L#define D3DFORMAT_OP_OFFSCREENPLAIN 0x00004000L#define D3DFORMAT_OP_SRGBREAD 0x00008000L#define D3DFORMAT_OP_BUMPMAP 0x00010000L#define D3DFORMAT_OP_NOFILTER 0x00040000L#define DDPF_D3DFORMAT 0x00200000l#define DDPF_NOVEL_TEXTURE_FORMAT 0x00100000l#define D3DFORMAT_MEMBEROFGROUP_ARGB 0x00080000L#define D3DFORMAT_OP_SRGBWRITE 0x00100000L#define D3DFORMAT_OP_NOALPHABLEND 0x00200000L#define D3DFORMAT_OP_AUTOGENMIPMAP 0x00400000L#define D3DFORMAT_OP_VERTEXTEXTURE 0x00800000L#define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP 0x01000000L#define DELETED_OK 0#define DELETED_LASTONE 1#define DELETED_NOTFOUND 2#define DDCALLBACKSSIZE_V1 (offsetof(DDHAL_DDCALLBACKS, SetExclusiveMode))#define DDCALLBACKSSIZE sizeof( DDHAL_DDCALLBACKS )#define DDRAWICLIP_WATCHWINDOW 0x00000001#define DDRAWICLIP_ISINITIALIZED 0x00000002#define DDRAWICLIP_INMASTERSPRITELIST 0x00000004#define PFINDEX_UNINITIALIZED (0UL)#define PFINDEX_UNSUPPORTED (~0UL)#define ROP_HAS_SOURCE 0x00000001l#define ROP_HAS_PATTERN 0x00000002l#define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN#define DDRAWIVPORT_ON 0x00000001#define DDRAWIVPORT_SOFTWARE_AUTOFLIP 0x00000002#define DDRAWIVPORT_COLORKEYANDINTERP 0x00000004#define DDRAWIVPORT_NOKERNELHANDLES 0x00000008#define DDRAWIVPORT_SOFTWARE_BOB 0x00000010#define DDRAWIVPORT_VBION 0x00000020#define DDRAWIVPORT_VIDEOON 0x00000040#define DDRAWI_GETCOLOR 0x0001#define DDRAWI_SETCOLOR 0x0002#define DDMCQUERY_READ 0x00000001#define DDWAITVB_I_TESTVB 0x80000006
#define DDBLT_ANYALPHA \ (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE | \ DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE | \ DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST)
#define DDHAL_ALIGNVALIDCAPS (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER | \ DDSCAPS_OVERLAY | DDSCAPS_TEXTURE | \ DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP )
#define DDHALINFOSIZE_V2 sizeof(DDHALINFO)
#define DDOVER_ANYALPHA \ (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE | \ DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE | \ DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST)
typedef struct _DDRAWI_DDRAWPALETTE_LCL { DWORD lpPalMore; LPDDRAWI_DDRAWPALETTE_GBL lpGbl; ULONG_PTR dwUnused0; DWORD dwLocalRefCnt;#ifndef _NO_COM IUnknown *pUnkOuter;#else PVOID pUnkOuter;#endif LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; ULONG_PTR dwReserved1; /* DirectX 6.0 */ ULONG_PTR dwDDRAWReserved1; ULONG_PTR dwDDRAWReserved2; ULONG_PTR dwDDRAWReserved3;} DDRAWI_DDRAWPALETTE_LCL;
typedef struct _DDMCCOMPBUFFERINFO { DWORD dwSize; DWORD dwNumCompBuffers; DWORD dwWidthToCreate; DWORD dwHeightToCreate; DWORD dwBytesToAllocate; DDSCAPS2 ddCompCaps; DDPIXELFORMAT ddPixelFormat;} DDMCCOMPBUFFERINFO, *LPDDMCCOMPBUFFERINFO;
typedef struct _DDMCBUFFERINFO { DWORD dwSize; LPDDRAWI_DDRAWSURFACE_LCL lpCompSurface; DWORD dwDataOffset; DWORD dwDataSize; LPVOID lpPrivate;} DDMCBUFFERINFO, *LPDDMCBUFFERINFO;
typedef struct _DDHAL_GETDRIVERSTATEDATA { DWORD dwFlags; __GNU_EXTENSION union { ULONG_PTR dwhContext; }; LPDWORD lpdwStates; DWORD dwLength; HRESULT ddRVal;} DDHAL_GETDRIVERSTATEDATA;
typedef struct _DDHAL_ADDATTACHEDSURFACEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; LPDDRAWI_DDRAWSURFACE_LCL lpSurfAttached; HRESULT ddRVal; LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface;} DDHAL_ADDATTACHEDSURFACEDATA;
typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; LPDDRAWI_DDRAWSURFACE_LCL lpDestSurface; DWORD dwInputDataSize; LPVOID lpInputData; DWORD dwOutputDataSize; LPVOID lpOutputData; HRESULT ddRVal; LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame;} DDHAL_BEGINMOCOMPFRAMEDATA;
typedef struct _DDHAL_COLORCONTROLDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; LPDDCOLORCONTROL lpColorData; DWORD dwFlags; HRESULT ddRVal; LPDDHALCOLORCB_COLORCONTROL ColorControl;} DDHAL_COLORCONTROLDATA;
typedef struct _DDHAL_CREATEMOCOMPDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; LPGUID lpGuid; DWORD dwUncompWidth; DWORD dwUncompHeight; DDPIXELFORMAT ddUncompPixelFormat; LPVOID lpData; DWORD dwDataSize; HRESULT ddRVal; LPDDHALMOCOMPCB_CREATE CreateMoComp;} DDHAL_CREATEMOCOMPDATA;
typedef struct _DDHAL_DESTROYMOCOMPDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; HRESULT ddRVal; LPDDHALMOCOMPCB_DESTROY DestroyMoComp;} DDHAL_DESTROYMOCOMPDATA;
typedef struct _DDHAL_ENDMOCOMPFRAMEDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; LPVOID lpInputData; DWORD dwInputDataSize; HRESULT ddRVal; LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame;} DDHAL_ENDMOCOMPFRAMEDATA;
typedef struct _DDHAL_FLIPTOGDISURFACEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; DWORD dwToGDI; DWORD dwReserved; HRESULT ddRVal; LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface;} DDHAL_FLIPTOGDISURFACEDATA;
typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; DDSCAPS DDSCaps; DWORD dwTotal; DWORD dwFree; HRESULT ddRVal; LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory; DDSCAPSEX ddsCapsEx;} DDHAL_GETAVAILDRIVERMEMORYDATA;
typedef struct _DDHAL_GETBLTSTATUSDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; DWORD dwFlags; HRESULT ddRVal; LPDDHALSURFCB_GETBLTSTATUS GetBltStatus;} DDHAL_GETBLTSTATUSDATA;
typedef struct _DDHAL_GETFLIPSTATUSDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; DWORD dwFlags; HRESULT ddRVal; LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus;} DDHAL_GETFLIPSTATUSDATA;
typedef struct _DDHAL_GETINTERNALMOCOMPDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPGUID lpGuid; DWORD dwWidth; DWORD dwHeight; DDPIXELFORMAT ddPixelFormat; DWORD dwScratchMemAlloc; HRESULT ddRVal; LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo;} DDHAL_GETINTERNALMOCOMPDATA;
typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPGUID lpGuid; DWORD dwWidth; DWORD dwHeight; DDPIXELFORMAT ddPixelFormat; DWORD dwNumTypesCompBuffs; LPDDMCCOMPBUFFERINFO lpCompBuffInfo; HRESULT ddRVal; LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo;} DDHAL_GETMOCOMPCOMPBUFFDATA;
typedef struct _DDHAL_GETMOCOMPGUIDSDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; DWORD dwNumGuids; LPGUID lpGuids; HRESULT ddRVal; LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids;} DDHAL_GETMOCOMPGUIDSDATA;
typedef struct _DDHAL_GETMOCOMPFORMATSDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPGUID lpGuid; DWORD dwNumFormats; LPDDPIXELFORMAT lpFormats; HRESULT ddRVal; LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats;} DDHAL_GETMOCOMPFORMATSDATA;
typedef struct _DDHAL_GETSCANLINEDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; DWORD dwScanLine; HRESULT ddRVal; LPDDHAL_GETSCANLINE GetScanLine;} DDHAL_GETSCANLINEDATA;
typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; LPDDRAWI_DDRAWSURFACE_LCL lpSurface; DWORD dwFlags; HRESULT ddRVal; LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus;} DDHAL_QUERYMOCOMPSTATUSDATA;
typedef struct _DDHAL_RENDERMOCOMPDATA { LPDDRAWI_DIRECTDRAW_LCL lpDD; LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; DWORD dwNumBuffers; LPDDMCBUFFERINFO lpBufferInfo; DWORD dwFunction; LPVOID lpInputData; DWORD dwInputDataSize; LPVOID lpOutputData; DWORD dwOutputDataSize; HRESULT ddRVal; LPDDHALMOCOMPCB_RENDER RenderMoComp;} DDHAL_RENDERMOCOMPDATA;
typedef struct _DDHAL_SETCOLORKEYDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; DWORD dwFlags; DDCOLORKEY ckNew; HRESULT ddRVal; LPDDHALSURFCB_SETCOLORKEY SetColorKey;} DDHAL_SETCOLORKEYDATA;
typedef struct _DDHAL_SETOVERLAYPOSITIONDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; LONG lXPos; LONG lYPos; HRESULT ddRVal; LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition;} DDHAL_SETOVERLAYPOSITIONDATA;
typedef struct _DDHAL_UPDATEOVERLAYDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; RECTL rDest; LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; RECTL rSrc; DWORD dwFlags; DDOVERLAYFX overlayFX; HRESULT ddRVal; LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay;} DDHAL_UPDATEOVERLAYDATA;
typedef struct _DDHAL_WAITFORVERTICALBLANKDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; DWORD dwFlags; DWORD bIsInVB; ULONG_PTR hEvent; HRESULT ddRVal; LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank;} DDHAL_WAITFORVERTICALBLANKDATA;
typedef struct _DDHAL_DRVSETCOLORKEYDATA { LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; DWORD dwFlags; DDCOLORKEY ckNew; HRESULT ddRVal; LPDDHAL_SETCOLORKEY SetColorKey;} DDHAL_DRVSETCOLORKEYDATA;
typedef struct _DDMONITORINFO { WORD Manufacturer; WORD Product; DWORD SerialNumber; GUID DeviceIdentifier; int Mode640x480; int Mode800x600; int Mode1024x768; int Mode1280x1024; int Mode1600x1200; int ModeReserved1; int ModeReserved2; int ModeReserved3;} DDMONITORINFO, FAR *LPDDMONITORINFO;
typedef struct _DDRAWI_DDRAWCLIPPER_INT { LPVOID lpVtbl; LPDDRAWI_DDRAWCLIPPER_LCL lpLcl; LPDDRAWI_DDRAWCLIPPER_INT lpLink; DWORD dwIntRefCnt;} DDRAWI_DDRAWCLIPPER_INT;
typedef struct _DDHAL_UPDATENONLOCALHEAPDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; DWORD dwHeap; FLATPTR fpGARTLin; FLATPTR fpGARTDev; ULONG_PTR ulPolicyMaxBytes; HRESULT ddRVal; LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap;} DDHAL_UPDATENONLOCALHEAPDATA;
typedef struct _DDHAL_SETCLIPLISTDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; HRESULT ddRVal; LPDDHALSURFCB_SETCLIPLIST SetClipList;} DDHAL_SETCLIPLISTDATA;
typedef struct _DDRAWI_DDMOTIONCOMP_LCL { LPDDRAWI_DIRECTDRAW_LCL lpDD; GUID guid; DWORD dwUncompWidth; DWORD dwUncompHeight; DDPIXELFORMAT ddUncompPixelFormat; DWORD dwInternalFlags; DWORD dwRefCnt; DWORD dwProcessId; HANDLE hMoComp; DWORD dwDriverReserved1; DWORD dwDriverReserved2; DWORD dwDriverReserved3; LPVOID lpDriverReserved1; LPVOID lpDriverReserved2; LPVOID lpDriverReserved3;} DDRAWI_DDMOTIONCOMP_LCL;
typedef struct _DDRAWI_DDMOTIONCOMP_INT { LPVOID lpVtbl; LPDDRAWI_DDMOTIONCOMP_LCL lpLcl; LPDDRAWI_DDMOTIONCOMP_INT lpLink; DWORD dwIntRefCnt;} DDRAWI_DDMOTIONCOMP_INT;
typedef struct _DDRAWI_DDVIDEOPORT_LCL { LPDDRAWI_DIRECTDRAW_LCL lpDD; DDVIDEOPORTDESC ddvpDesc; DDVIDEOPORTINFO ddvpInfo; LPDDRAWI_DDRAWSURFACE_INT lpSurface; LPDDRAWI_DDRAWSURFACE_INT lpVBISurface; LPDDRAWI_DDRAWSURFACE_INT *lpFlipInts; DWORD dwNumAutoflip; DWORD dwProcessID; DWORD dwStateFlags; DWORD dwFlags; DWORD dwRefCnt; FLATPTR fpLastFlip; ULONG_PTR dwReserved1; ULONG_PTR dwReserved2; HANDLE hDDVideoPort; DWORD dwNumVBIAutoflip; LPDDVIDEOPORTDESC lpVBIDesc; LPDDVIDEOPORTDESC lpVideoDesc; LPDDVIDEOPORTINFO lpVBIInfo; LPDDVIDEOPORTINFO lpVideoInfo; DWORD dwVBIProcessID; LPDDRAWI_DDVIDEOPORT_INT lpVPNotify;} DDRAWI_DDVIDEOPORT_LCL;
typedef struct _DDRAWI_DDVIDEOPORT_INT { LPVOID lpVtbl; LPDDRAWI_DDVIDEOPORT_LCL lpLcl; LPDDRAWI_DDVIDEOPORT_INT lpLink; DWORD dwIntRefCnt; DWORD dwFlags;} DDRAWI_DDVIDEOPORT_INT;
typedef struct _DDRAWI_DDRAWCLIPPER_LCL { DWORD lpClipMore; LPDDRAWI_DDRAWCLIPPER_GBL lpGbl; LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; DWORD dwLocalRefCnt;#ifndef _NO_COM IUnknown *pUnkOuter;#else PVOID pUnkOuter;#endif LPDDRAWI_DIRECTDRAW_INT lpDD_int; ULONG_PTR dwReserved1;#ifndef _NO_COM IUnknown *pAddrefedThisOwner;#else PVOID pAddrefedThisOwner;#endif} DDRAWI_DDRAWCLIPPER_LCL;
typedef struct _DDRAWI_DDRAWCLIPPER_GBL { DWORD dwRefCnt; DWORD dwFlags; LPDDRAWI_DIRECTDRAW_GBL lpDD; DWORD dwProcessId; ULONG_PTR dwReserved1; ULONG_PTR hWnd; LPRGNDATA lpStaticClipList;} DDRAWI_DDRAWCLIPPER_GBL;
typedef BOOL (PASCAL *LPDDHEL_INIT)(LPDDRAWI_DIRECTDRAW_GBL,BOOL);
extern HRESULT DDAPILateAllocateSurfaceMem( LPDIRECTDRAWSURFACE lpSurface, DWORD dwPleaseAllocType, DWORD dwWidthInBytesOrSize, DWORD dwHeight);
LPDIRECTDRAWSURFACE GetNextMipMap( LPDIRECTDRAWSURFACE lpLevel);
typedef struct IDirectDrawClipperVtbl DIRECTDRAWCLIPPERCALLBACKS;typedef struct IDirectDrawPaletteVtbl DIRECTDRAWPALETTECALLBACKS;typedef struct IDirectDrawSurfaceVtbl DIRECTDRAWSURFACECALLBACKS;typedef struct IDirectDrawSurface2Vtbl DIRECTDRAWSURFACE2CALLBACKS;typedef struct IDirectDrawSurface3Vtbl DIRECTDRAWSURFACE3CALLBACKS;typedef struct IDirectDrawSurface4Vtbl DIRECTDRAWSURFACE4CALLBACKS;typedef struct IDirectDrawSurface7Vtbl DIRECTDRAWSURFACE7CALLBACKS;typedef struct IDirectDrawColorControlVtbl DIRECTDRAWCOLORCONTROLCALLBACKS;typedef struct IDirectDrawVtbl DIRECTDRAWCALLBACKS;typedef struct IDirectDraw2Vtbl DIRECTDRAW2CALLBACKS;typedef struct IDirectDraw4Vtbl DIRECTDRAW4CALLBACKS;typedef struct IDirectDraw7Vtbl DIRECTDRAW7CALLBACKS;typedef struct IDirectDrawKernelVtbl DIRECTDRAWKERNELCALLBACKS;typedef struct IDirectDrawSurfaceKernelVtbl DIRECTDRAWSURFACEKERNELCALLBACKS;typedef struct IDirectDrawGammaControlVtbl DIRECTDRAWGAMMACONTROLCALLBACKS;
typedef DIRECTDRAWCLIPPERCALLBACKS *LPDIRECTDRAWCLIPPERCALLBACKS;typedef DIRECTDRAWPALETTECALLBACKS *LPDIRECTDRAWPALETTECALLBACKS;typedef DIRECTDRAWSURFACECALLBACKS *LPDIRECTDRAWSURFACECALLBACKS;typedef DIRECTDRAWCALLBACKS *LPDIRECTDRAWCALLBACKS;
HRESULT CALLBACKD3DParseUnknownCommand ( LPVOID lpvCommands, LPVOID *lplpvReturnedCommand);
#ifdef __cplusplus} /* extern "C" */#endif
#endif /* __DDRAWI_INCLUDED__ */