📄 ddrawi.h
字号:
DWORD dwFlags;
LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData;
LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData;
} DDHAL_DDKERNELCALLBACKS, *LPDDHAL_DDKERNELCALLBACKS;
#define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001l
#define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002l
#define DDKERNELCALLBACKSSIZE sizeof(DDHAL_DDKERNELCALLBACKS)
typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)( LPDDGAMMARAMP, LPBYTE);
/*
* DIRECTDRAWMOTIONCOMP object callbacks
*/
typedef DWORD (FAR PASCAL *LPDDHALMOCOMPCB_GETGUIDS)( LPDDHAL_GETMOCOMPGUIDSDATA);
typedef DWORD (FAR PASCAL *LPDDHALMOCOMPCB_GETFORMATS)( LPDDHAL_GETMOCOMPFORMATSDATA);
typedef DWORD (FAR PASCAL *LPDDHALMOCOMPCB_CREATE)( LPDDHAL_CREATEMOCOMPDATA);
typedef DWORD (FAR PASCAL *LPDDHALMOCOMPCB_GETCOMPBUFFINFO)( LPDDHAL_GETMOCOMPCOMPBUFFDATA);
typedef DWORD (FAR PASCAL *LPDDHALMOCOMPCB_GETINTERNALINFO)( LPDDHAL_GETINTERNALMOCOMPDATA);
typedef DWORD (FAR PASCAL *LPDDHALMOCOMPCB_BEGINFRAME)( LPDDHAL_BEGINMOCOMPFRAMEDATA);
typedef DWORD (FAR PASCAL *LPDDHALMOCOMPCB_ENDFRAME)( LPDDHAL_ENDMOCOMPFRAMEDATA);
typedef DWORD (FAR PASCAL *LPDDHALMOCOMPCB_RENDER)( LPDDHAL_RENDERMOCOMPDATA);
typedef DWORD (FAR PASCAL *LPDDHALMOCOMPCB_QUERYSTATUS)( LPDDHAL_QUERYMOCOMPSTATUSDATA);
typedef DWORD (FAR 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;
typedef DDHAL_DDMOTIONCOMPCALLBACKS FAR *LPDDHAL_DDMOTIONCOMPCALLBACKS;
#define DDMOTIONCOMPCALLBACKSSIZE sizeof( DDHAL_DDMOTIONCOMPCALLBACKS )
#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
/*
* CALLBACK RETURN VALUES
* * these are values returned by the driver from the above callback routines
*/
/*
* indicates that the display driver didn't do anything with the call
*/
#define DDHAL_DRIVER_NOTHANDLED 0x00000000l
/*
* indicates that the display driver handled the call; HRESULT value is valid
*/
#define DDHAL_DRIVER_HANDLED 0x00000001l
/*
* indicates that the display driver couldn't handle the call because it
* ran out of color key hardware resources
*/
#define DDHAL_DRIVER_NOCKEYHW 0x00000002l
/*
* Capabilities structure for non-local video memory
*/
typedef struct _DDNONLOCALVIDMEMCAPS
{
DWORD dwSize;
DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts
DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts
DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts
DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts
DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
} DDNONLOCALVIDMEMCAPS;
typedef struct _DDNONLOCALVIDMEMCAPS FAR *LPDDNONLOCALVIDMEMCAPS;
/*
* More driver surface capabilities (in addition to those described in DDCORECAPS).
* This struct contains the caps bits added to the DDCAPS.ddsCaps structure in DX6.
*/
typedef struct _DDMORESURFACECAPS
{
DWORD dwSize; // size of DDMORESURFACECAPS structure
DDSCAPSEX ddsCapsMore;
/*
* The DDMORESURFACECAPS struct is of variable size. The following list may be
* filled in by DX6-aware drivers (see DDVERSIONINFO) to restrict their
* video memory heaps (those which are exposed to DirectDraw) to
* certain sets of DDSCAPS_ bits. Thse entries are exactly analogous to
* the ddsCaps and ddsCapsAlt members of the VIDMEM structures listed in
* the VIDMEMINFO.pvmList member of DDHALINFO.vmiData. There should be
* exactly DDHALINFO.vmiData.dwNumHeaps copies of tagExtendedHeapRestrictions
* in this struct. The size of this struct is thus:
* DDMORESURFACECAPS.dwSize = sizeof(DDMORESURFACECAPS) +
* (DDHALINFO.vmiData.dwNumHeaps-1) * sizeof(DDSCAPSEX)*2;
* Note the -1 accounts for the fact that DDMORESURFACECAPS is declared to have 1
* tagExtendedHeapRestrictions member.
*/
struct tagExtendedHeapRestrictions
{
DDSCAPSEX ddsCapsEx;
DDSCAPSEX ddsCapsExAlt;
} ddsExtendedHeapRestrictions[1];
} DDMORESURFACECAPS, FAR * LPDDMORESURFACECAPS;
// Stereo, driver returns DD_OK if mode is ok for stereo
typedef struct _DDSTEREOMODE
{
DWORD dwSize; // size of DDSTEREOMODECAPS structure
DWORD dwHeight;
DWORD dwWidth;
DWORD dwBpp;
DWORD dwRefreshRate;
BOOL bSupported; // driver supports this video mode...
} DDSTEREOMODE, FAR * LPDDSTEREOMODE;
/*
* DDRAW palette interface struct
*/
typedef struct _DDRAWI_DDRAWPALETTE_INT
{
LPVOID lpVtbl; // pointer to array of interface methods
LPDDRAWI_DDRAWPALETTE_LCL lpLcl; // pointer to interface data
LPDDRAWI_DDRAWPALETTE_INT lpLink; // link to next interface
DWORD dwIntRefCnt; // interface reference count
} DDRAWI_DDRAWPALETTE_INT;
/*
* DDRAW internal version of DIRECTDRAWPALETTE object; it has data after the vtable
*/
typedef struct _DDRAWI_DDRAWPALETTE_GBL
{
DWORD dwRefCnt; // reference count
DWORD dwFlags; // flags
LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; // PRIVATE: DIRECTDRAW object
DWORD dwProcessId; // owning process
LPPALETTEENTRY lpColorTable; // array of palette entries
union
{
ULONG_PTR dwReserved1; // reserved for use by display driver which created this object
HPALETTE hHELGDIPalette;
};
/*
* Fields added in version 5.0. Check if the ddraw version >= 5 (passed during
* driver initialization) to see if these fields will be present.
*/
DWORD dwDriverReserved; // For use by HAL, regardless of who created object
DWORD dwContentsStamp; // Incremented when palette changes.
/*
* Fields added in version 6
*/
DWORD dwSaveStamp; // Incremented when palette changes.
/*
* And in version 7
*/
DWORD dwHandle; //Handle used in drawprim2 palette notification
} DDRAWI_DDRAWPALETTE_GBL;
/*
* (CMcC) The palette no longer maintains a back pointer to the owning surface
* (there may now be many owning surfaces). So the lpDDSurface is now dwReserved0
* (this mod. assumes that sizeof(DWORD) == sizeof(LPDDRAWI_DDRAWSURFACE_LCL). A
* fairly safe assumption I think.
*/
typedef struct _DDRAWI_DDRAWPALETTE_LCL
{
DWORD lpPalMore; // pointer to additional local data
LPDDRAWI_DDRAWPALETTE_GBL lpGbl; // pointer to data
ULONG_PTR dwUnused0; // not currently used.
DWORD dwLocalRefCnt; // local ref cnt
IUnknown FAR *pUnkOuter; // outer IUnknown
LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; // pointer to owning local driver object
ULONG_PTR dwReserved1; // reserved for use by display driver
/*
* Added for DX6
*/
ULONG_PTR dwDDRAWReserved1;
ULONG_PTR dwDDRAWReserved2;
ULONG_PTR dwDDRAWReserved3;
} DDRAWI_DDRAWPALETTE_LCL;
// bit definition for dwFlags in DDRAWI_DDRAWPALETTE_GBL and
// dwPaletteFlags in D3DHAL_DP2SETPALETTE
#define DDRAWIPAL_256 0x00000001l // 256 entry palette
#define DDRAWIPAL_16 0x00000002l // 16 entry palette
#define DDRAWIPAL_GDI 0x00000004l // palette allocated through GDI
#define DDRAWIPAL_STORED_8 0x00000008l // palette stored as 8bpp/entry
#define DDRAWIPAL_STORED_16 0x00000010l // palette stored as 16bpp/entry
#define DDRAWIPAL_STORED_24 0x00000020l // palette stored as 24bpp/entry
#define DDRAWIPAL_EXCLUSIVE 0x00000040l // palette being used in exclusive mode
#define DDRAWIPAL_INHEL 0x00000080l // palette is done in the hel
#define DDRAWIPAL_DIRTY 0x00000100l // gdi palette out 'o sync
#define DDRAWIPAL_ALLOW256 0x00000200l // can fully update palette
#define DDRAWIPAL_4 0x00000400l // 4 entry palette
#define DDRAWIPAL_2 0x00000800l // 2 entry palette
#define DDRAWIPAL_STORED_8INDEX 0x00001000l // palette stored as 8-bit index into dst palette
#define DDRAWIPAL_ALPHA 0x00002000l // palette entries contain alpha
/*
* DDRAW clipper interface struct
*/
typedef struct _DDRAWI_DDRAWCLIPPER_INT
{
LPVOID lpVtbl; // pointer to array of interface methods
LPDDRAWI_DDRAWCLIPPER_LCL lpLcl; // pointer to interface data
LPDDRAWI_DDRAWCLIPPER_INT lpLink; // link to next interface
DWORD dwIntRefCnt; // interface reference count
} DDRAWI_DDRAWCLIPPER_INT;
/*
* DDRAW internal version of DIRECTDRAWCLIPPER object; it has data after the vtable
*/
typedef struct _DDRAWI_DDRAWCLIPPER_GBL
{
DWORD dwRefCnt; // reference count
DWORD dwFlags; // flags
LPDDRAWI_DIRECTDRAW_GBL lpDD; // PRIVATE: DIRECTDRAW object
DWORD dwProcessId; // owning process
ULONG_PTR dwReserved1; // reserved for use by display driver
ULONG_PTR hWnd; // window
LPRGNDATA lpStaticClipList; // clip list set by app
} DDRAWI_DDRAWCLIPPER_GBL;
/*
* (CMcC) As with palettes, the clipper no longer maintains a back pointer to the
* owning surface (there may now be many owning surfaces). So the lpDDSurface
* is now dwReserved0 (this mod. assumes that sizeof(DWORD) ==
* sizeof(LPDDRAWI_DDRAWSURFACE_LCL). A fairly safe assumption I think.
*/
typedef struct _DDRAWI_DDRAWCLIPPER_LCL
{
DWORD lpClipMore; // pointer to additional local data
LPDDRAWI_DDRAWCLIPPER_GBL lpGbl; // pointer to data
LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; // pointer to owning local DD object
DWORD dwLocalRefCnt; // local ref cnt
IUnknown FAR *pUnkOuter; // outer IUnknown
LPDDRAWI_DIRECTDRAW_INT lpDD_int; // pointer to owning DD object interface
ULONG_PTR dwReserved1; // reserved for use by display driver
IUnknown * pAddrefedThisOwner; //This is the ddraw object that created this
//clipper, if nonzero. Must Release it when clipper
//is released.
} DDRAWI_DDRAWCLIPPER_LCL;
#define DDRAWICLIP_WATCHWINDOW 0x00000001l
#define DDRAWICLIP_ISINITIALIZED 0x00000002l
#define DDRAWICLIP_INMASTERSPRITELIST 0x00000004l // clipper is referenced in master sprite list
/*
* ATTACHLIST - internally used to maintain list of attached surfaces
*/
typedef struct _ATTACHLIST
{
DWORD dwFlags;
struct _ATTACHLIST FAR *lpLink; // link to next attached surface
struct _DDRAWI_DDRAWSURFACE_LCL FAR *lpAttached; // attached surface local obj
struct _DDRAWI_DDRAWSURFACE_INT FAR *lpIAttached; // attached surface interface
} ATTACHLIST;
typedef ATTACHLIST FAR *LPATTACHLIST;
#define DDAL_IMPLICIT 0x00000001l
/*
* DBLNODE - a node in a doubly-linked list of surface interfaces
*/
typedef struct _DBLNODE
{
struct _DBLNODE FAR *next; // link to next node
struct _DBLNODE FAR *prev; // link to previous node
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -