mirror of
https://github.com/reactos/reactos.git
synced 2025-04-26 00:20:34 +00:00
splitted rosdraw.h; outsourced big comment into text file.
svn path=/trunk/; revision=26729
This commit is contained in:
parent
216cb06c21
commit
4a65ec1dcc
3 changed files with 414 additions and 511 deletions
73
reactos/dll/directx/ddraw/Surface/surface.h
Normal file
73
reactos/dll/directx/ddraw/Surface/surface.h
Normal file
|
@ -0,0 +1,73 @@
|
|||
// public interfaces
|
||||
ULONG WINAPI Main_DDrawSurface_AddRef(LPDIRECTDRAWSURFACE7);
|
||||
ULONG WINAPI Main_DDrawSurface_Release(LPDIRECTDRAWSURFACE7);
|
||||
HRESULT WINAPI Main_DDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE7, REFIID, LPVOID*);
|
||||
HRESULT WINAPI Main_DDrawSurface_ReleaseDC(LPDIRECTDRAWSURFACE7, HDC);
|
||||
HRESULT WINAPI Main_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX);
|
||||
HRESULT WINAPI Main_DDrawSurface_BltBatch(LPDIRECTDRAWSURFACE7, LPDDBLTBATCH, DWORD, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_BltFast(LPDIRECTDRAWSURFACE7, DWORD, DWORD, LPDIRECTDRAWSURFACE7, LPRECT, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_DeleteAttachedSurface(LPDIRECTDRAWSURFACE7, DWORD, LPDIRECTDRAWSURFACE7);
|
||||
HRESULT WINAPI Main_DDrawSurface_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE7, LPVOID, LPDDENUMSURFACESCALLBACK7);
|
||||
HRESULT WINAPI Main_DDrawSurface_EnumOverlayZOrders(LPDIRECTDRAWSURFACE7, DWORD, LPVOID,LPDDENUMSURFACESCALLBACK7);
|
||||
HRESULT WINAPI Main_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 , LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_FreePrivateData(LPDIRECTDRAWSURFACE7, REFGUID);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetAttachedSurface(LPDIRECTDRAWSURFACE7, LPDDSCAPS2, LPDIRECTDRAWSURFACE7*);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7, DWORD dwFlags);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetCaps(LPDIRECTDRAWSURFACE7, LPDDSCAPS2 pCaps);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetClipper(LPDIRECTDRAWSURFACE7, LPDIRECTDRAWCLIPPER*);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7, DWORD, LPDDCOLORKEY);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7, HDC *);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetDDInterface(LPDIRECTDRAWSURFACE7, LPVOID*);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetFlipStatus(LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetLOD(LPDIRECTDRAWSURFACE7, LPDWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetOverlayPosition(LPDIRECTDRAWSURFACE7, LPLONG, LPLONG);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetPalette(LPDIRECTDRAWSURFACE7, LPDIRECTDRAWPALETTE*);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetPixelFormat(LPDIRECTDRAWSURFACE7, LPDDPIXELFORMAT);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetPriority(LPDIRECTDRAWSURFACE7, LPDWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetPrivateData(LPDIRECTDRAWSURFACE7, REFGUID, LPVOID, LPDWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetUniquenessValue(LPDIRECTDRAWSURFACE7, LPDWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_IsLost(LPDIRECTDRAWSURFACE7);
|
||||
HRESULT WINAPI Main_DDrawSurface_PageLock(LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_PageUnlock(LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_ReleaseDC(LPDIRECTDRAWSURFACE7, HDC);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetClipper (LPDIRECTDRAWSURFACE7, LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7, DWORD, LPDDCOLORKEY);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetOverlayPosition (LPDIRECTDRAWSURFACE7, LONG, LONG);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetPalette (LPDIRECTDRAWSURFACE7, LPDIRECTDRAWPALETTE);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetPriority (LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetPrivateData (LPDIRECTDRAWSURFACE7, REFGUID, LPVOID, DWORD, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_UpdateOverlayZOrder (LPDIRECTDRAWSURFACE7, DWORD, LPDIRECTDRAWSURFACE7);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetSurfaceDesc(LPDIRECTDRAWSURFACE7, DDSURFACEDESC2 *, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetLOD(LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_Unlock (LPDIRECTDRAWSURFACE7, LPRECT);
|
||||
HRESULT WINAPI Main_DDrawSurface_Initialize (LPDIRECTDRAWSURFACE7, LPDIRECTDRAW, LPDDSURFACEDESC2);
|
||||
HRESULT WINAPI Main_DDrawSurface_Lock (LPDIRECTDRAWSURFACE7, LPRECT, LPDDSURFACEDESC2, DWORD, HANDLE);
|
||||
HRESULT WINAPI Main_DDrawSurface_Restore(LPDIRECTDRAWSURFACE7);
|
||||
HRESULT WINAPI Main_DDrawSurface_UpdateOverlay (LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT,
|
||||
DWORD, LPDDOVERLAYFX);
|
||||
HRESULT WINAPI Main_DDrawSurface_ChangeUniquenessValue(LPDIRECTDRAWSURFACE7 iface);
|
||||
HRESULT WINAPI Main_DDrawSurface_AddAttachedSurface(LPDIRECTDRAWSURFACE7 iface, LPDIRECTDRAWSURFACE7 pAttach);
|
||||
HRESULT WINAPI Main_DDrawSurface_AddOverlayDirtyRect(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface, LPDDSURFACEDESC2 pDDSD);
|
||||
HRESULT WINAPI Main_DirectDraw_EnumDisplayModes(LPDIRECTDRAW7 iface, DWORD dwFlags, LPDDSURFACEDESC2 pDDSD, LPVOID context, LPDDENUMMODESCALLBACK2 callback);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface, DDSURFACEDESC2 *DDSD, DWORD Flags);
|
||||
HRESULT WINAPI Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps, LPDWORD total, LPDWORD free);
|
||||
|
||||
// hel callbacks
|
||||
DWORD CALLBACK HelDdDestroyDriver(LPDDHAL_DESTROYDRIVERDATA lpDestroyDriver);
|
||||
DWORD CALLBACK HelDdCreateSurface(LPDDHAL_CREATESURFACEDATA lpCreateSurface);
|
||||
DWORD CALLBACK HelDdSetColorKey(LPDDHAL_DRVSETCOLORKEYDATA lpSetColorKey);
|
||||
DWORD CALLBACK HelDdSetMode(LPDDHAL_SETMODEDATA SetMode);
|
||||
DWORD CALLBACK HelDdWaitForVerticalBlank(LPDDHAL_WAITFORVERTICALBLANKDATA lpWaitForVerticalBlank);
|
||||
DWORD CALLBACK HelDdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA lpCanCreateSurface);
|
||||
DWORD CALLBACK HelDdCreatePalette(LPDDHAL_CREATEPALETTEDATA lpCreatePalette);
|
||||
DWORD CALLBACK HelDdGetScanLine(LPDDHAL_GETSCANLINEDATA lpGetScanLine);
|
||||
DWORD CALLBACK HelDdSetExclusiveMode(LPDDHAL_SETEXCLUSIVEMODEDATA lpSetExclusiveMode);
|
||||
DWORD CALLBACK HelDdFlipToGDISurface(LPDDHAL_FLIPTOGDISURFACEDATA lpFlipToGDISurface);
|
||||
|
||||
// internal functions
|
||||
HRESULT CreateOverlaySurface(LPDDRAWI_DIRECTDRAW_INT This, LPDDRAWI_DDRAWSURFACE_INT *That, LPDDSURFACEDESC2 pDDSD);
|
||||
HRESULT CreateBackBufferSurface(LPDDRAWI_DIRECTDRAW_INT This, LPDDRAWI_DDRAWSURFACE_INT *That, LPDDRAWI_DDRAWSURFACE_LCL *lpLcl, LPDDSURFACEDESC2 pDDSD);
|
||||
HRESULT CreatePrimarySurface(LPDDRAWI_DIRECTDRAW_INT This, LPDDRAWI_DDRAWSURFACE_INT *That,LPDDRAWI_DDRAWSURFACE_LCL *lpLcl, LPDDSURFACEDESC2 pDDSD);
|
338
reactos/dll/directx/ddraw/ddraw_structures.txt
Normal file
338
reactos/dll/directx/ddraw/ddraw_structures.txt
Normal file
|
@ -0,0 +1,338 @@
|
|||
* DirectDraw Object struct
|
||||
|
||||
DDRAWI_DIRECTDRAW_INT
|
||||
it is the the return pointer from ddraw.dll to the program
|
||||
|
||||
DDRAWI_DIRECTDRAW_LCL
|
||||
It is the program own private data
|
||||
|
||||
DDRAWI_DIRECTDRAW_GBL
|
||||
This struct is gboal for whole ddraw.dll for all program
|
||||
it is static in ddraw if it change it change for all
|
||||
program
|
||||
|
||||
The struct
|
||||
|
||||
from http://msdn2.microsoft.com/en-us/library/ms898267.aspx
|
||||
it was not document for windows 2000/xp/2003 but ms did document it
|
||||
for windows ce 5.0 the link are to windows ce 5.0 arch
|
||||
|
||||
typedef struct _DDRAWI_DIRECTDRAW_INT {
|
||||
LPVOID lpVtbl;
|
||||
LPDDRAWI_DIRECTDRAW_LCL lpLcl;
|
||||
LPDDRAWI_DIRECTDRAW_INT lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DIRECTDRAW_INT;
|
||||
|
||||
rest of the struct are from msdn for windows 2000/xp/2003
|
||||
typedef struct _DDRAWI_DIRECTDRAW_LCL {
|
||||
DWORD lpDDMore;
|
||||
LPDDRAWI_DIRECTDRAW_GBL lpGbl; // fill it from function Create_DirectDraw with static pointer ddgbl
|
||||
DWORD dwUnused0;
|
||||
DWORD dwLocalFlags;
|
||||
DWORD dwLocalRefCnt;
|
||||
DWORD dwProcessId;
|
||||
IUnknown FAR *pUnkOuter;
|
||||
DWORD dwObsolete1;
|
||||
ULONG_PTR hWnd;
|
||||
ULONG_PTR hDC; // create HDC and save it to this pointer
|
||||
DWORD dwErrorMode;
|
||||
LPDDRAWI_DDRAWSURFACE_INT lpPrimary;
|
||||
LPDDRAWI_DDRAWSURFACE_INT lpCB;
|
||||
DWORD dwPreferredMode;
|
||||
HINSTANCE hD3DInstance;
|
||||
IUnknown FAR *pD3DIUnknown;
|
||||
LPDDHAL_CALLBACKS lpDDCB; // same memory pointer as DDRAWI_DIRECTDRAW_GBL->lpDDCBtmp, setup by function StartDirectDraw
|
||||
ULONG_PTR hDDVxd;
|
||||
DWORD dwAppHackFlags;
|
||||
ULONG_PTR hFocusWnd;
|
||||
DWORD dwHotTracking;
|
||||
DWORD dwIMEState;
|
||||
ULONG_PTR hWndPopup;
|
||||
ULONG_PTR hDD;
|
||||
ULONG_PTR hGammaCalibrator;
|
||||
LPDDGAMMACALIBRATORPROC lpGammaCalibrator;
|
||||
} DDRAWI_DIRECTDRAW_LCL;
|
||||
|
||||
|
||||
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; // pointer to it self (DDRAWI_DIRECTDRAW_GBL)
|
||||
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;
|
||||
DWORD FAR *lpdwFourCC;
|
||||
DWORD dwNumModes;
|
||||
LPDDHALMODEINFO lpModeInfo;
|
||||
PROCESS_LIST plProcessList;
|
||||
DWORD dwSurfaceLockCount;
|
||||
DWORD dwAliasedLockCnt;
|
||||
ULONG_PTR dwReserved3;
|
||||
ULONG_PTR hDD; // GdiEntry1 are filling this pointer
|
||||
char cObsolete[12];
|
||||
DWORD dwReserved1;
|
||||
DWORD dwReserved2;
|
||||
DBLNODE dbnOverlayRoot;
|
||||
volatile LPWORD lpwPDeviceFlags;
|
||||
DWORD dwPDevice;
|
||||
DWORD dwWin16LockCnt;
|
||||
DWORD dwUnused3;
|
||||
DWORD hInstance;
|
||||
DWORD dwEvent16;
|
||||
DWORD dwSaveNumModes;
|
||||
ULONG_PTR lpD3DGlobalDriverData;
|
||||
ULONG_PTR lpD3DHALCallbacks;
|
||||
DDCORECAPS ddBothCaps;
|
||||
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;
|
||||
DWORD dwDOSBoxEvent;
|
||||
RECT rectDesktop;
|
||||
char cDriverName[MAX_DRIVER_NAME];
|
||||
ULONG_PTR lpD3DHALCallbacks3;
|
||||
DWORD dwNumZPixelFormats;
|
||||
LPDDPIXELFORMAT lpZPixelFormats;
|
||||
LPDDRAWI_DDMOTIONCOMP_INT mcList;
|
||||
DWORD hDDVxd;
|
||||
DDSCAPSEX ddsCapsMore;
|
||||
} DDRAWI_DIRECTDRAW_GBL;
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* Clipper Object struct
|
||||
DDRAWI_DDRAWCLIPPER_INT
|
||||
it is the the return pointer from ddraw.dll to the program
|
||||
|
||||
DDRAWI_DDRAWCLIPPER_LCL
|
||||
It is the program own private data
|
||||
|
||||
DDRAWI_DDRAWCLIPPER_GBL
|
||||
This struct is gboal for whole ddraw.dll for all program
|
||||
it is static in ddraw if it change it change for all
|
||||
program
|
||||
|
||||
The struct
|
||||
|
||||
typedef struct _DDRAWI_DDRAWCLIPPER_INT {
|
||||
LPVOID lpVtbl;
|
||||
LPDDRAWI_DDRAWCLIPPER_LCL lpLcl;
|
||||
LPDDRAWI_DDRAWCLIPPER_INT lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDRAWCLIPPER_INT;
|
||||
|
||||
typedef struct _DDRAWI_DDRAWCLIPPER_LCL {
|
||||
DWORD lpClipMore;
|
||||
LPDDRAWI_DDRAWCLIPPER_GBL lpGbl;
|
||||
LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
|
||||
DWORD dwLocalRefCnt;
|
||||
IUnknown FAR *pUnkOuter;
|
||||
LPDDRAWI_DIRECTDRAW_INT lpDD_int;
|
||||
ULONG_PTR dwReserved1;
|
||||
IUnknown *pAddrefedThisOwner;
|
||||
} 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 struct _DDRAWI_DDRAWPALETTE_INT {
|
||||
LPVOID lpVtbl;
|
||||
LPDDRAWI_DDRAWPALETTE_LCL lpLcl;
|
||||
LPDDRAWI_DDRAWPALETTE_INT lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDRAWPALETTE_INT;
|
||||
|
||||
typedef struct _DDRAWI_DDRAWPALETTE_LCL {
|
||||
DWORD lpPalMore;
|
||||
LPDDRAWI_DDRAWPALETTE_GBL lpGbl;
|
||||
ULONG_PTR dwUnused0;
|
||||
DWORD dwLocalRefCnt;
|
||||
IUnknown FAR *pUnkOuter;
|
||||
LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
|
||||
ULONG_PTR dwReserved1;
|
||||
ULONG_PTR dwDDRAWReserved1;
|
||||
ULONG_PTR dwDDRAWReserved2;
|
||||
ULONG_PTR dwDDRAWReserved3;
|
||||
} DDRAWI_DDRAWPALETTE_LCL;
|
||||
|
||||
typedef struct _DDRAWI_DDRAWPALETTE_GBL {
|
||||
DWORD dwRefCnt;
|
||||
DWORD dwFlags;
|
||||
LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
|
||||
DWORD dwProcessId;
|
||||
LPPALETTEENTRY lpColorTable;
|
||||
union {
|
||||
ULONG_PTR dwReserved1;
|
||||
HPALETTE hHELGDIPalette;
|
||||
};
|
||||
DWORD dwDriverReserved;
|
||||
DWORD dwContentsStamp;
|
||||
DWORD dwSaveStamp;
|
||||
DWORD dwHandle;
|
||||
} DDRAWI_DDRAWPALETTE_GBL;
|
||||
*/
|
||||
|
||||
/*
|
||||
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_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;
|
||||
} DDRAWI_DDVIDEOPORT_LCL;
|
||||
|
||||
|
||||
Surface
|
||||
typedef struct _DDRAWI_DDRAWSURFACE_GBL {
|
||||
DWORD dwRefCnt;
|
||||
DWORD dwGlobalFlags;
|
||||
union {
|
||||
LPACCESSRECTLIST lpRectList;
|
||||
DWORD dwBlockSizeY;
|
||||
};
|
||||
union {
|
||||
LPVMEMHEAP lpVidMemHeap;
|
||||
DWORD dwBlockSizeX;
|
||||
};
|
||||
union {
|
||||
LPDDRAWI_DIRECTDRAW_GBL lpDD;
|
||||
LPVOID lpDDHandle;
|
||||
};
|
||||
FLATPTR fpVidMem;
|
||||
union {
|
||||
LONG lPitch;
|
||||
DWORD dwLinearSize;
|
||||
};
|
||||
WORD wHeight;
|
||||
WORD wWidth;
|
||||
DWORD dwUsageCount;
|
||||
ULONG_PTR dwReserved1;
|
||||
DDPIXELFORMAT ddpfSurface;
|
||||
} DDRAWI_DDRAWSURFACE_GBL;
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* This comment info maybe is wrong
|
||||
bare in mind I am using logic thinking
|
||||
for follow info does not exists in MSDN
|
||||
so I am drawing clude how previews stuffs
|
||||
works that are document in MSDN/DDK
|
||||
|
||||
follow struct should exists ???
|
||||
DDRAWI_DDVIDEOPORT_GBL
|
||||
DDRAWI_DDGAMMACONTROL_INT
|
||||
DDRAWI_DDGAMMACONTROL_LCL
|
||||
DDRAWI_DDGAMMACONTROL_GBL
|
||||
DDRAWI_DDCOLORCONTROL_INT
|
||||
DDRAWI_DDCOLORCONTROL_LCL
|
||||
DDRAWI_DDCOLORCONTROL_GBL
|
||||
DDRAWI_KERNEL_INT
|
||||
DDRAWI_KERNEL_LCL
|
||||
DDRAWI_KERNEL_GBL
|
||||
DDRAWI_DDKERNELSURFACE_INT
|
||||
DDRAWI_DDKERNELSURFACE_LCL
|
||||
DDRAWI_DDKERNELSURFACE_GBL
|
||||
|
||||
follow struct can be easy create
|
||||
DDRAWI_DDGAMMACONTROL_INT
|
||||
DDRAWI_DDCOLORCONTROL_INT
|
||||
DDRAWI_KERNEL_INT
|
||||
|
||||
the DDRAWI_DDGAMMACONTROL_INT should looking like this
|
||||
typedef struct _DDRAWI_DDGAMMACONTROL_INT
|
||||
{
|
||||
LPVOID lpVtbl;
|
||||
LPDDRAWI_DDGAMMACONTROL_LCL lpLcl;
|
||||
LPDDRAWI_DDGAMMACONTROL_INT lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDGAMMACONTROL_INT, *LPDDRAWI_DDGAMMACONTROL_INT
|
||||
|
||||
how did I got this struct I looked at all other INT struct how they where
|
||||
build. But it is not 100% sure this one is right untill I/we known how
|
||||
the DDRAWI_DDGAMMACONTROL_LCL works and DDRAWI_DDCOLORCONTROL_GBL
|
||||
our internal struct will look like this
|
||||
typedef struct _DDRAWI_DDGAMMACONTROL_INT
|
||||
{
|
||||
LPVOID lpVtbl;
|
||||
LPVOID lpLcl;
|
||||
LPVOID lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDGAMMACONTROL_INT, *LPDDRAWI_DDGAMMACONTROL_INT
|
||||
|
||||
same goes for DDRAWI_DDCOLORCONTROL_INT
|
||||
|
||||
typedef struct DDRAWI_DDCOLORCONTROL_INT
|
||||
{
|
||||
LPVOID lpVtbl;
|
||||
LPVOID lpLcl;
|
||||
LPVOID lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDCOLORCONTROL_INT, *LPDDRAWI_DDCOLORCONTROL_INT
|
|
@ -2,20 +2,15 @@
|
|||
#define __DDRAW_PRIVATE
|
||||
|
||||
/********* Includes *********/
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
#include <ddraw.h>
|
||||
#include <ddrawi.h>
|
||||
#include <d3dhal.h>
|
||||
#include <ddrawgdi.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "Ddraw\ddraw.h"
|
||||
#include "Surface\surface.h"
|
||||
|
||||
/* DirectDraw startup code only internal use */
|
||||
extern DDRAWI_DIRECTDRAW_GBL ddgbl;
|
||||
|
@ -24,12 +19,10 @@ extern WCHAR classname[128];
|
|||
extern WNDCLASSW wnd_class;
|
||||
extern CRITICAL_SECTION ddcs;
|
||||
|
||||
|
||||
HRESULT WINAPI StartDirectDraw(LPDIRECTDRAW* iface, LPGUID pGUID, BOOL reenable);
|
||||
HRESULT WINAPI StartDirectDrawHal(LPDIRECTDRAW* iface, BOOL reenable);
|
||||
HRESULT WINAPI StartDirectDrawHel(LPDIRECTDRAW* iface, BOOL reenable);
|
||||
HRESULT WINAPI Create_DirectDraw (LPGUID pGUID, LPDIRECTDRAW* pIface, REFIID id, BOOL ex);
|
||||
|
||||
HRESULT WINAPI ReCreateDirectDraw(LPDIRECTDRAW* iface);
|
||||
|
||||
/* DirectDraw Cleanup code only internal use */
|
||||
|
@ -46,438 +39,9 @@ VOID Cleanup(LPDIRECTDRAW7 iface);
|
|||
VOID WINAPI AcquireDDThreadLock();
|
||||
VOID WINAPI ReleaseDDThreadLock();
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_QueryInterface (LPDIRECTDRAW7 , REFIID , LPVOID *);
|
||||
ULONG WINAPI Main_DirectDraw_AddRef(LPDIRECTDRAW7 );
|
||||
ULONG WINAPI Main_DirectDraw_Release(LPDIRECTDRAW7 );
|
||||
HRESULT WINAPI Main_DirectDraw_Compact(LPDIRECTDRAW7 );
|
||||
HRESULT WINAPI Main_DirectDraw_CreateClipper(LPDIRECTDRAW7, DWORD, LPDIRECTDRAWCLIPPER *, IUnknown *);
|
||||
HRESULT WINAPI Main_DirectDraw_CreatePalette(LPDIRECTDRAW7, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE*, LPUNKNOWN);
|
||||
HRESULT WINAPI Main_DirectDraw_CreateSurface(LPDIRECTDRAW7, LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE7 *, IUnknown *);
|
||||
HRESULT WINAPI Main_DirectDraw_DuplicateSurface(LPDIRECTDRAW7, LPDIRECTDRAWSURFACE7, LPDIRECTDRAWSURFACE7*);
|
||||
HRESULT WINAPI Main_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW7, LPDDDEVICEIDENTIFIER2, DWORD);
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_EnumSurfaces(LPDIRECTDRAW7, DWORD, LPDDSURFACEDESC2, LPVOID,
|
||||
LPDDENUMSURFACESCALLBACK7);
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7);
|
||||
HRESULT WINAPI Main_DirectDraw_GetDisplayMode(LPDIRECTDRAW7, LPDDSURFACEDESC2);
|
||||
HRESULT WINAPI Main_DirectDraw_GetSurfaceFromDC(LPDIRECTDRAW7, HDC, LPDIRECTDRAWSURFACE7 *);
|
||||
HRESULT WINAPI Main_DirectDraw_GetCaps(LPDIRECTDRAW7, LPDDCAPS pDriverCaps, LPDDCAPS);
|
||||
HRESULT WINAPI Main_DirectDraw_GetFourCCCodes(LPDIRECTDRAW7, LPDWORD pNumCodes, LPDWORD);
|
||||
HRESULT WINAPI Main_DirectDraw_GetGDISurface(LPDIRECTDRAW7, LPDIRECTDRAWSURFACE7 *);
|
||||
HRESULT WINAPI Main_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7, DWORD dwFlags, HANDLE);
|
||||
HRESULT WINAPI Main_DirectDraw_GetMonitorFrequency(LPDIRECTDRAW7, LPDWORD);
|
||||
HRESULT WINAPI Main_DirectDraw_GetScanLine(LPDIRECTDRAW7, LPDWORD);
|
||||
HRESULT WINAPI Main_DirectDraw_GetVerticalBlankStatus(LPDIRECTDRAW7, LPBOOL);
|
||||
HRESULT WINAPI Main_DirectDraw_RestoreDisplayMode(LPDIRECTDRAW7);
|
||||
HRESULT WINAPI Main_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7, HWND, DWORD);
|
||||
HRESULT WINAPI Main_DirectDraw_SetDisplayMode (LPDIRECTDRAW7, DWORD, DWORD, DWORD, DWORD, DWORD);
|
||||
HRESULT WINAPI Main_DirectDraw_RestoreAllSurfaces(LPDIRECTDRAW7 iface);
|
||||
HRESULT WINAPI Main_DirectDraw_TestCooperativeLevel(LPDIRECTDRAW7 iface);
|
||||
HRESULT WINAPI Main_DirectDraw_Initialize (LPDIRECTDRAW7 iface, LPGUID lpGUID);
|
||||
HRESULT WINAPI Main_DirectDraw_StartModeTest(LPDIRECTDRAW7 iface, LPSIZE pModes, DWORD dwNumModes, DWORD dwFlags);
|
||||
HRESULT WINAPI Main_DirectDraw_EvaluateMode(LPDIRECTDRAW7 iface,DWORD a,DWORD* b);
|
||||
|
||||
ULONG WINAPI Main_DDrawSurface_AddRef(LPDIRECTDRAWSURFACE7);
|
||||
ULONG WINAPI Main_DDrawSurface_Release(LPDIRECTDRAWSURFACE7);
|
||||
HRESULT WINAPI Main_DDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE7, REFIID, LPVOID*);
|
||||
HRESULT WINAPI Main_DDrawSurface_ReleaseDC(LPDIRECTDRAWSURFACE7, HDC);
|
||||
HRESULT WINAPI Main_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX);
|
||||
HRESULT WINAPI Main_DDrawSurface_BltBatch(LPDIRECTDRAWSURFACE7, LPDDBLTBATCH, DWORD, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_BltFast(LPDIRECTDRAWSURFACE7, DWORD, DWORD, LPDIRECTDRAWSURFACE7, LPRECT, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_DeleteAttachedSurface(LPDIRECTDRAWSURFACE7, DWORD, LPDIRECTDRAWSURFACE7);
|
||||
HRESULT WINAPI Main_DDrawSurface_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE7, LPVOID, LPDDENUMSURFACESCALLBACK7);
|
||||
HRESULT WINAPI Main_DDrawSurface_EnumOverlayZOrders(LPDIRECTDRAWSURFACE7, DWORD, LPVOID,LPDDENUMSURFACESCALLBACK7);
|
||||
HRESULT WINAPI Main_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 , LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_FreePrivateData(LPDIRECTDRAWSURFACE7, REFGUID);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetAttachedSurface(LPDIRECTDRAWSURFACE7, LPDDSCAPS2, LPDIRECTDRAWSURFACE7*);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7, DWORD dwFlags);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetCaps(LPDIRECTDRAWSURFACE7, LPDDSCAPS2 pCaps);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetClipper(LPDIRECTDRAWSURFACE7, LPDIRECTDRAWCLIPPER*);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7, DWORD, LPDDCOLORKEY);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7, HDC *);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetDDInterface(LPDIRECTDRAWSURFACE7, LPVOID*);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetFlipStatus(LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetLOD(LPDIRECTDRAWSURFACE7, LPDWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetOverlayPosition(LPDIRECTDRAWSURFACE7, LPLONG, LPLONG);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetPalette(LPDIRECTDRAWSURFACE7, LPDIRECTDRAWPALETTE*);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetPixelFormat(LPDIRECTDRAWSURFACE7, LPDDPIXELFORMAT);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetPriority(LPDIRECTDRAWSURFACE7, LPDWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetPrivateData(LPDIRECTDRAWSURFACE7, REFGUID, LPVOID, LPDWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetUniquenessValue(LPDIRECTDRAWSURFACE7, LPDWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_IsLost(LPDIRECTDRAWSURFACE7);
|
||||
HRESULT WINAPI Main_DDrawSurface_PageLock(LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_PageUnlock(LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_ReleaseDC(LPDIRECTDRAWSURFACE7, HDC);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetClipper (LPDIRECTDRAWSURFACE7, LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7, DWORD, LPDDCOLORKEY);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetOverlayPosition (LPDIRECTDRAWSURFACE7, LONG, LONG);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetPalette (LPDIRECTDRAWSURFACE7, LPDIRECTDRAWPALETTE);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetPriority (LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetPrivateData (LPDIRECTDRAWSURFACE7, REFGUID, LPVOID, DWORD, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_UpdateOverlayZOrder (LPDIRECTDRAWSURFACE7, DWORD, LPDIRECTDRAWSURFACE7);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetSurfaceDesc(LPDIRECTDRAWSURFACE7, DDSURFACEDESC2 *, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetLOD(LPDIRECTDRAWSURFACE7, DWORD);
|
||||
HRESULT WINAPI Main_DDrawSurface_Unlock (LPDIRECTDRAWSURFACE7, LPRECT);
|
||||
HRESULT WINAPI Main_DDrawSurface_Initialize (LPDIRECTDRAWSURFACE7, LPDIRECTDRAW, LPDDSURFACEDESC2);
|
||||
HRESULT WINAPI Main_DDrawSurface_Lock (LPDIRECTDRAWSURFACE7, LPRECT, LPDDSURFACEDESC2, DWORD, HANDLE);
|
||||
HRESULT WINAPI Main_DDrawSurface_Restore(LPDIRECTDRAWSURFACE7);
|
||||
HRESULT WINAPI Main_DDrawSurface_UpdateOverlay (LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT,
|
||||
DWORD, LPDDOVERLAYFX);
|
||||
HRESULT WINAPI Main_DDrawSurface_ChangeUniquenessValue(LPDIRECTDRAWSURFACE7 iface);
|
||||
|
||||
|
||||
ULONG WINAPI DirectDrawClipper_AddRef (LPDIRECTDRAWCLIPPER iface);
|
||||
HRESULT WINAPI DirectDrawClipper_Initialize( LPDIRECTDRAWCLIPPER iface, LPDIRECTDRAW lpDD, DWORD dwFlags);
|
||||
|
||||
|
||||
|
||||
HRESULT CreateOverlaySurface(LPDDRAWI_DIRECTDRAW_INT This, LPDDRAWI_DDRAWSURFACE_INT *That, LPDDSURFACEDESC2 pDDSD);
|
||||
HRESULT CreateBackBufferSurface(LPDDRAWI_DIRECTDRAW_INT This, LPDDRAWI_DDRAWSURFACE_INT *That, LPDDRAWI_DDRAWSURFACE_LCL *lpLcl, LPDDSURFACEDESC2 pDDSD);
|
||||
HRESULT CreatePrimarySurface(LPDDRAWI_DIRECTDRAW_INT This, LPDDRAWI_DDRAWSURFACE_INT *That,LPDDRAWI_DDRAWSURFACE_LCL *lpLcl, LPDDSURFACEDESC2 pDDSD);
|
||||
|
||||
/* DirectDraw Object struct
|
||||
|
||||
DDRAWI_DIRECTDRAW_INT
|
||||
it is the the return pointer from ddraw.dll to the program
|
||||
|
||||
DDRAWI_DIRECTDRAW_LCL
|
||||
It is the program own private data
|
||||
|
||||
DDRAWI_DIRECTDRAW_GBL
|
||||
This struct is gboal for whole ddraw.dll for all program
|
||||
it is static in ddraw if it change it change for all
|
||||
program
|
||||
|
||||
The struct
|
||||
|
||||
from http://msdn2.microsoft.com/en-us/library/ms898267.aspx
|
||||
it was not document for windows 2000/xp/2003 but ms did document it
|
||||
for windows ce 5.0 the link are to windows ce 5.0 arch
|
||||
|
||||
typedef struct _DDRAWI_DIRECTDRAW_INT {
|
||||
LPVOID lpVtbl;
|
||||
LPDDRAWI_DIRECTDRAW_LCL lpLcl;
|
||||
LPDDRAWI_DIRECTDRAW_INT lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DIRECTDRAW_INT;
|
||||
|
||||
rest of the struct are from msdn for windows 2000/xp/2003
|
||||
typedef struct _DDRAWI_DIRECTDRAW_LCL {
|
||||
DWORD lpDDMore;
|
||||
LPDDRAWI_DIRECTDRAW_GBL lpGbl; // fill it from function Create_DirectDraw with static pointer ddgbl
|
||||
DWORD dwUnused0;
|
||||
DWORD dwLocalFlags;
|
||||
DWORD dwLocalRefCnt;
|
||||
DWORD dwProcessId;
|
||||
IUnknown FAR *pUnkOuter;
|
||||
DWORD dwObsolete1;
|
||||
ULONG_PTR hWnd;
|
||||
ULONG_PTR hDC; // create HDC and save it to this pointer
|
||||
DWORD dwErrorMode;
|
||||
LPDDRAWI_DDRAWSURFACE_INT lpPrimary;
|
||||
LPDDRAWI_DDRAWSURFACE_INT lpCB;
|
||||
DWORD dwPreferredMode;
|
||||
HINSTANCE hD3DInstance;
|
||||
IUnknown FAR *pD3DIUnknown;
|
||||
LPDDHAL_CALLBACKS lpDDCB; // same memory pointer as DDRAWI_DIRECTDRAW_GBL->lpDDCBtmp, setup by function StartDirectDraw
|
||||
ULONG_PTR hDDVxd;
|
||||
DWORD dwAppHackFlags;
|
||||
ULONG_PTR hFocusWnd;
|
||||
DWORD dwHotTracking;
|
||||
DWORD dwIMEState;
|
||||
ULONG_PTR hWndPopup;
|
||||
ULONG_PTR hDD;
|
||||
ULONG_PTR hGammaCalibrator;
|
||||
LPDDGAMMACALIBRATORPROC lpGammaCalibrator;
|
||||
} DDRAWI_DIRECTDRAW_LCL;
|
||||
|
||||
|
||||
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; // pointer to it self (DDRAWI_DIRECTDRAW_GBL)
|
||||
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;
|
||||
DWORD FAR *lpdwFourCC;
|
||||
DWORD dwNumModes;
|
||||
LPDDHALMODEINFO lpModeInfo;
|
||||
PROCESS_LIST plProcessList;
|
||||
DWORD dwSurfaceLockCount;
|
||||
DWORD dwAliasedLockCnt;
|
||||
ULONG_PTR dwReserved3;
|
||||
ULONG_PTR hDD; // GdiEntry1 are filling this pointer
|
||||
char cObsolete[12];
|
||||
DWORD dwReserved1;
|
||||
DWORD dwReserved2;
|
||||
DBLNODE dbnOverlayRoot;
|
||||
volatile LPWORD lpwPDeviceFlags;
|
||||
DWORD dwPDevice;
|
||||
DWORD dwWin16LockCnt;
|
||||
DWORD dwUnused3;
|
||||
DWORD hInstance;
|
||||
DWORD dwEvent16;
|
||||
DWORD dwSaveNumModes;
|
||||
ULONG_PTR lpD3DGlobalDriverData;
|
||||
ULONG_PTR lpD3DHALCallbacks;
|
||||
DDCORECAPS ddBothCaps;
|
||||
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;
|
||||
DWORD dwDOSBoxEvent;
|
||||
RECT rectDesktop;
|
||||
char cDriverName[MAX_DRIVER_NAME];
|
||||
ULONG_PTR lpD3DHALCallbacks3;
|
||||
DWORD dwNumZPixelFormats;
|
||||
LPDDPIXELFORMAT lpZPixelFormats;
|
||||
LPDDRAWI_DDMOTIONCOMP_INT mcList;
|
||||
DWORD hDDVxd;
|
||||
DDSCAPSEX ddsCapsMore;
|
||||
} DDRAWI_DIRECTDRAW_GBL;
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* Clipper Object struct
|
||||
DDRAWI_DDRAWCLIPPER_INT
|
||||
it is the the return pointer from ddraw.dll to the program
|
||||
|
||||
DDRAWI_DDRAWCLIPPER_LCL
|
||||
It is the program own private data
|
||||
|
||||
DDRAWI_DDRAWCLIPPER_GBL
|
||||
This struct is gboal for whole ddraw.dll for all program
|
||||
it is static in ddraw if it change it change for all
|
||||
program
|
||||
|
||||
The struct
|
||||
|
||||
typedef struct _DDRAWI_DDRAWCLIPPER_INT {
|
||||
LPVOID lpVtbl;
|
||||
LPDDRAWI_DDRAWCLIPPER_LCL lpLcl;
|
||||
LPDDRAWI_DDRAWCLIPPER_INT lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDRAWCLIPPER_INT;
|
||||
|
||||
typedef struct _DDRAWI_DDRAWCLIPPER_LCL {
|
||||
DWORD lpClipMore;
|
||||
LPDDRAWI_DDRAWCLIPPER_GBL lpGbl;
|
||||
LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
|
||||
DWORD dwLocalRefCnt;
|
||||
IUnknown FAR *pUnkOuter;
|
||||
LPDDRAWI_DIRECTDRAW_INT lpDD_int;
|
||||
ULONG_PTR dwReserved1;
|
||||
IUnknown *pAddrefedThisOwner;
|
||||
} 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 struct _DDRAWI_DDRAWPALETTE_INT {
|
||||
LPVOID lpVtbl;
|
||||
LPDDRAWI_DDRAWPALETTE_LCL lpLcl;
|
||||
LPDDRAWI_DDRAWPALETTE_INT lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDRAWPALETTE_INT;
|
||||
|
||||
typedef struct _DDRAWI_DDRAWPALETTE_LCL {
|
||||
DWORD lpPalMore;
|
||||
LPDDRAWI_DDRAWPALETTE_GBL lpGbl;
|
||||
ULONG_PTR dwUnused0;
|
||||
DWORD dwLocalRefCnt;
|
||||
IUnknown FAR *pUnkOuter;
|
||||
LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
|
||||
ULONG_PTR dwReserved1;
|
||||
ULONG_PTR dwDDRAWReserved1;
|
||||
ULONG_PTR dwDDRAWReserved2;
|
||||
ULONG_PTR dwDDRAWReserved3;
|
||||
} DDRAWI_DDRAWPALETTE_LCL;
|
||||
|
||||
typedef struct _DDRAWI_DDRAWPALETTE_GBL {
|
||||
DWORD dwRefCnt;
|
||||
DWORD dwFlags;
|
||||
LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
|
||||
DWORD dwProcessId;
|
||||
LPPALETTEENTRY lpColorTable;
|
||||
union {
|
||||
ULONG_PTR dwReserved1;
|
||||
HPALETTE hHELGDIPalette;
|
||||
};
|
||||
DWORD dwDriverReserved;
|
||||
DWORD dwContentsStamp;
|
||||
DWORD dwSaveStamp;
|
||||
DWORD dwHandle;
|
||||
} DDRAWI_DDRAWPALETTE_GBL;
|
||||
*/
|
||||
|
||||
/*
|
||||
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_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;
|
||||
} DDRAWI_DDVIDEOPORT_LCL;
|
||||
|
||||
|
||||
Surface
|
||||
typedef struct _DDRAWI_DDRAWSURFACE_GBL {
|
||||
DWORD dwRefCnt;
|
||||
DWORD dwGlobalFlags;
|
||||
union {
|
||||
LPACCESSRECTLIST lpRectList;
|
||||
DWORD dwBlockSizeY;
|
||||
};
|
||||
union {
|
||||
LPVMEMHEAP lpVidMemHeap;
|
||||
DWORD dwBlockSizeX;
|
||||
};
|
||||
union {
|
||||
LPDDRAWI_DIRECTDRAW_GBL lpDD;
|
||||
LPVOID lpDDHandle;
|
||||
};
|
||||
FLATPTR fpVidMem;
|
||||
union {
|
||||
LONG lPitch;
|
||||
DWORD dwLinearSize;
|
||||
};
|
||||
WORD wHeight;
|
||||
WORD wWidth;
|
||||
DWORD dwUsageCount;
|
||||
ULONG_PTR dwReserved1;
|
||||
DDPIXELFORMAT ddpfSurface;
|
||||
} DDRAWI_DDRAWSURFACE_GBL;
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* This comment info maybe is wrong
|
||||
bare in mind I am using logic thinking
|
||||
for follow info does not exists in MSDN
|
||||
so I am drawing clude how previews stuffs
|
||||
works that are document in MSDN/DDK
|
||||
|
||||
follow struct should exists ???
|
||||
DDRAWI_DDVIDEOPORT_GBL
|
||||
DDRAWI_DDGAMMACONTROL_INT
|
||||
DDRAWI_DDGAMMACONTROL_LCL
|
||||
DDRAWI_DDGAMMACONTROL_GBL
|
||||
DDRAWI_DDCOLORCONTROL_INT
|
||||
DDRAWI_DDCOLORCONTROL_LCL
|
||||
DDRAWI_DDCOLORCONTROL_GBL
|
||||
DDRAWI_KERNEL_INT
|
||||
DDRAWI_KERNEL_LCL
|
||||
DDRAWI_KERNEL_GBL
|
||||
DDRAWI_DDKERNELSURFACE_INT
|
||||
DDRAWI_DDKERNELSURFACE_LCL
|
||||
DDRAWI_DDKERNELSURFACE_GBL
|
||||
|
||||
follow struct can be easy create
|
||||
DDRAWI_DDGAMMACONTROL_INT
|
||||
DDRAWI_DDCOLORCONTROL_INT
|
||||
DDRAWI_KERNEL_INT
|
||||
|
||||
the DDRAWI_DDGAMMACONTROL_INT should looking like this
|
||||
typedef struct _DDRAWI_DDGAMMACONTROL_INT
|
||||
{
|
||||
LPVOID lpVtbl;
|
||||
LPDDRAWI_DDGAMMACONTROL_LCL lpLcl;
|
||||
LPDDRAWI_DDGAMMACONTROL_INT lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDGAMMACONTROL_INT, *LPDDRAWI_DDGAMMACONTROL_INT
|
||||
|
||||
how did I got this struct I looked at all other INT struct how they where
|
||||
build. But it is not 100% sure this one is right untill I/we known how
|
||||
the DDRAWI_DDGAMMACONTROL_LCL works and DDRAWI_DDCOLORCONTROL_GBL
|
||||
our internal struct will look like this
|
||||
typedef struct _DDRAWI_DDGAMMACONTROL_INT
|
||||
{
|
||||
LPVOID lpVtbl;
|
||||
LPVOID lpLcl;
|
||||
LPVOID lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDGAMMACONTROL_INT, *LPDDRAWI_DDGAMMACONTROL_INT
|
||||
|
||||
same goes for DDRAWI_DDCOLORCONTROL_INT
|
||||
|
||||
typedef struct DDRAWI_DDCOLORCONTROL_INT
|
||||
{
|
||||
LPVOID lpVtbl;
|
||||
LPVOID lpLcl;
|
||||
LPVOID lpLink;
|
||||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDCOLORCONTROL_INT, *LPDDRAWI_DDCOLORCONTROL_INT
|
||||
*/
|
||||
|
||||
typedef struct DDRAWI_DDCOLORCONTROL_INT
|
||||
{
|
||||
LPVOID lpVtbl;
|
||||
|
@ -486,7 +50,6 @@ typedef struct DDRAWI_DDCOLORCONTROL_INT
|
|||
DWORD dwIntRefCnt;
|
||||
} DDRAWI_DDCOLORCONTROL_INT, *LPDDRAWI_DDCOLORCONTROL_INT;
|
||||
|
||||
|
||||
typedef struct _DDRAWI_DDGAMMACONTROL_INT
|
||||
{
|
||||
LPVOID lpVtbl;
|
||||
|
@ -514,10 +77,7 @@ typedef struct _DDRAWI_DDKERNELSURFACE_INT
|
|||
/* now to real info that are for private use and are our own */
|
||||
|
||||
|
||||
|
||||
/*********** VTables ************/
|
||||
|
||||
|
||||
extern IDirectDrawVtbl DirectDraw_Vtable;
|
||||
extern IDirectDraw2Vtbl DirectDraw2_Vtable;
|
||||
extern IDirectDraw4Vtbl DirectDraw4_Vtable;
|
||||
|
@ -535,75 +95,7 @@ extern IDirectDrawKernelVtbl DirectDrawKernel_Vtable;
|
|||
extern IDirectDrawSurfaceKernelVtbl DirectDrawSurfaceKernel_Vtable;
|
||||
|
||||
/********* Prototypes **********/
|
||||
HRESULT WINAPI Main_DDrawSurface_AddAttachedSurface(LPDIRECTDRAWSURFACE7 iface, LPDIRECTDRAWSURFACE7 pAttach);
|
||||
HRESULT WINAPI Main_DDrawSurface_AddOverlayDirtyRect(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect);
|
||||
HRESULT WINAPI Main_DDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface, LPDDSURFACEDESC2 pDDSD);
|
||||
HRESULT WINAPI Main_DirectDraw_EnumDisplayModes(LPDIRECTDRAW7 iface, DWORD dwFlags, LPDDSURFACEDESC2 pDDSD, LPVOID context, LPDDENUMMODESCALLBACK2 callback);
|
||||
HRESULT WINAPI Main_DDrawSurface_SetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface, DDSURFACEDESC2 *DDSD, DWORD Flags);
|
||||
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps, LPDWORD total, LPDWORD free);
|
||||
|
||||
|
||||
VOID Hal_DirectDraw_Release (LPDIRECTDRAW7 );
|
||||
HRESULT Hal_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7, LPDDSCAPS2, LPDWORD, LPDWORD );
|
||||
HRESULT Hal_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7, DWORD, HANDLE );
|
||||
HRESULT Hal_DirectDraw_GetScanLine(LPDIRECTDRAW7 , LPDWORD );
|
||||
HRESULT Hal_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 );
|
||||
HRESULT Hal_DirectDraw_SetDisplayMode (LPDIRECTDRAW7, DWORD, DWORD, DWORD, DWORD, DWORD );
|
||||
HRESULT Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
|
||||
HRESULT Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event);
|
||||
HRESULT Hal_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface, LPDIRECTDRAWSURFACE7 override, DWORD dwFlags);
|
||||
HRESULT Hal_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags, LPDDCOLORKEY pCKey);
|
||||
HRESULT Hal_DDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect);
|
||||
HRESULT Hal_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
|
||||
HRESULT Hal_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
|
||||
|
||||
HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 );
|
||||
HRESULT Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 );
|
||||
VOID Hel_DirectDraw_Release (LPDIRECTDRAW7 );
|
||||
HRESULT Hel_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 , LPDDSCAPS2 ddsaps, LPDWORD , LPDWORD );
|
||||
HRESULT Hel_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7, DWORD, HANDLE );
|
||||
HRESULT Hel_DirectDraw_GetScanLine(LPDIRECTDRAW7 , LPDWORD );
|
||||
HRESULT Hel_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 );
|
||||
HRESULT Hel_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 , DWORD , DWORD ,DWORD , DWORD , DWORD );
|
||||
HRESULT Hel_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
|
||||
HRESULT Hel_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event);
|
||||
HRESULT Hel_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags, LPDDCOLORKEY pCKey);
|
||||
HRESULT Hel_DDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect);
|
||||
HRESULT Hel_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
|
||||
HRESULT Hel_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface, LPDIRECTDRAWSURFACE7 override, DWORD dwFlags);
|
||||
HRESULT Hel_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
|
||||
|
||||
/* HEL CALLBACK */
|
||||
DWORD CALLBACK HelDdDestroyDriver(LPDDHAL_DESTROYDRIVERDATA lpDestroyDriver);
|
||||
DWORD CALLBACK HelDdCreateSurface(LPDDHAL_CREATESURFACEDATA lpCreateSurface);
|
||||
DWORD CALLBACK HelDdSetColorKey(LPDDHAL_DRVSETCOLORKEYDATA lpSetColorKey);
|
||||
DWORD CALLBACK HelDdSetMode(LPDDHAL_SETMODEDATA SetMode);
|
||||
DWORD CALLBACK HelDdWaitForVerticalBlank(LPDDHAL_WAITFORVERTICALBLANKDATA lpWaitForVerticalBlank);
|
||||
DWORD CALLBACK HelDdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA lpCanCreateSurface);
|
||||
DWORD CALLBACK HelDdCreatePalette(LPDDHAL_CREATEPALETTEDATA lpCreatePalette);
|
||||
DWORD CALLBACK HelDdGetScanLine(LPDDHAL_GETSCANLINEDATA lpGetScanLine);
|
||||
DWORD CALLBACK HelDdSetExclusiveMode(LPDDHAL_SETEXCLUSIVEMODEDATA lpSetExclusiveMode);
|
||||
DWORD CALLBACK HelDdFlipToGDISurface(LPDDHAL_FLIPTOGDISURFACEDATA lpFlipToGDISurface);
|
||||
|
||||
DWORD CALLBACK HelDdSurfAddAttachedSurface(LPDDHAL_ADDATTACHEDSURFACEDATA lpDestroySurface);
|
||||
DWORD CALLBACK HelDdSurfBlt(LPDDHAL_BLTDATA lpBltData);
|
||||
DWORD CALLBACK HelDdSurfDestroySurface(LPDDHAL_DESTROYSURFACEDATA lpDestroySurfaceData);
|
||||
DWORD CALLBACK HelDdSurfFlip(LPDDHAL_FLIPDATA lpFlipData);
|
||||
DWORD CALLBACK HelDdSurfGetBltStatus(LPDDHAL_GETBLTSTATUSDATA lpGetBltStatusData);
|
||||
DWORD CALLBACK HelDdSurfGetFlipStatus(LPDDHAL_GETFLIPSTATUSDATA lpGetFlipStatusData);
|
||||
DWORD CALLBACK HelDdSurfLock(LPDDHAL_LOCKDATA lpLockData);
|
||||
DWORD CALLBACK HelDdSurfreserved4(DWORD *lpPtr);
|
||||
DWORD CALLBACK HelDdSurfSetClipList(LPDDHAL_SETCLIPLISTDATA lpSetClipListData);
|
||||
DWORD CALLBACK HelDdSurfSetColorKey(LPDDHAL_SETCOLORKEYDATA lpSetColorKeyData);
|
||||
DWORD CALLBACK HelDdSurfSetOverlayPosition(LPDDHAL_SETOVERLAYPOSITIONDATA lpSetOverlayPositionData);
|
||||
DWORD CALLBACK HelDdSurfSetPalette(LPDDHAL_SETPALETTEDATA lpSetPaletteData);
|
||||
DWORD CALLBACK HelDdSurfUnlock(LPDDHAL_UNLOCKDATA lpUnLockData);
|
||||
DWORD CALLBACK HelDdSurfUpdateOverlay(LPDDHAL_UPDATEOVERLAYDATA lpUpDateOveryLayData);
|
||||
|
||||
|
||||
|
||||
VOID Hal_DirectDraw_Release (LPDIRECTDRAW7);
|
||||
|
||||
/* Setting for HEL should be move to ros special reg key ? */
|
||||
|
||||
|
|
Loading…
Reference in a new issue