📄 ddrawi.h
字号:
* should not fail DirectDraw if they receive an unknown DirectDraw runtime
* version.
*/
#define DD_VERSION 0x00000200l
#define DD_RUNTIME_VERSION 0x00000802l
/*
* this is the HAL version.
* the driver returns this number from QUERYESCSUPPORT/DCICOMMAND
*/
#define DD_HAL_VERSION 0x0100
#include "dciddi.h"
#define DDCREATEDRIVEROBJECT 10 // create an object
#define DDGET32BITDRIVERNAME 11 // get a 32-bit driver name
#define DDNEWCALLBACKFNS 12 // new callback fns coming
#define DDVERSIONINFO 13 // tells driver the ddraw version
typedef struct
{
char szName[260]; // 32-bit driver name
char szEntryPoint[64]; // entry point
DWORD dwContext; // context to pass to entry point
} DD32BITDRIVERDATA, FAR *LPDD32BITDRIVERDATA;
typedef struct
{
DWORD dwHALVersion; // Version of DirectDraw for which the HAL was created
ULONG_PTR dwReserved1; // Reserved for future use
ULONG_PTR dwReserved2; // Reserved for future use
} DDVERSIONDATA, FAR *LPDDVERSIONDATA;
typedef DWORD (FAR PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext);
/*
* pointer to video meory
*/
typedef ULONG_PTR FLATPTR;
/*
* indicates that DDRAW.DLL has been unloaded...
*/
#define DDRAW_DLL_UNLOADED (LPVOID) 1
/*
* critical section types
*/
typedef LPVOID CSECT_HANDLE;
#ifdef NOUSE_CRITSECTS
typedef xxx CSECT; // generate an error for now
#else
#if defined( IS_32 ) && !defined( _NOCSECT_TYPE )
typedef CRITICAL_SECTION CSECT;
typedef CSECT *LPCSECT;
#else
typedef struct
{
DWORD vals[6];
} CSECT;
typedef void FAR *LPCSECT;
#endif
#endif
/*
* DLL names
*/
#define DDHAL_DRIVER_DLLNAME "DDRAW16.DLL"
#define DDHAL_APP_DLLNAME "DDRAW.DLL"
/*
* maximum size of a driver name
*/
#ifndef CCHDEVICENAME
#define CCHDEVICENAME 32
#endif
#define MAX_DRIVER_NAME CCHDEVICENAME
/*
* largest palette supported
*/
#define MAX_PALETTE_SIZE 256
/*
* maximum number of surfaces that can be autoflipped between
*/
#define MAX_AUTOFLIP_BUFFERS 10
/*
* Indicates the surface is an execute buffer, i.e., a linear chunk of system
* or video memory that holds a Direct3D display list. A driver reports this
* cap to indicate that it can create execute buffers in video memory and
* Direct3D uses this bit to request execute buffers. However, it is not
* visible to via the API.
*/
#define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2
/*
* Indicates to the driver that the "execute" buffer that is to be created is actually
* a vertex buffer. Used by CreateVertexBuffer in D3D
*/
#define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1
/*
* Indicates to the driver that the "execute" buffer that is to be created is actually
* a command buffer. Used by internally in D3D
*/
#define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
/*
* Indicates to the driver that the "execute" buffer that is to be created is actually
* an index buffer.
*/
#define DDSCAPS2_INDEXBUFFER DDSCAPS2_RESERVED3
/*
* Internal formats are not exposed to applications.
*/
#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
/*
* pre-declare pointers to structs containing data for DDHAL fns
*/
typedef struct _DDHAL_CREATEPALETTEDATA FAR *LPDDHAL_CREATEPALETTEDATA;
typedef struct _DDHAL_CREATESURFACEDATA FAR *LPDDHAL_CREATESURFACEDATA;
typedef struct _DDHAL_CANCREATESURFACEDATA FAR *LPDDHAL_CANCREATESURFACEDATA;
typedef struct _DDHAL_WAITFORVERTICALBLANKDATA FAR *LPDDHAL_WAITFORVERTICALBLANKDATA;
typedef struct _DDHAL_DESTROYDRIVERDATA FAR *LPDDHAL_DESTROYDRIVERDATA;
typedef struct _DDHAL_SETMODEDATA FAR *LPDDHAL_SETMODEDATA;
typedef struct _DDHAL_DRVSETCOLORKEYDATA FAR *LPDDHAL_DRVSETCOLORKEYDATA;
typedef struct _DDHAL_GETSCANLINEDATA FAR *LPDDHAL_GETSCANLINEDATA;
typedef struct _DDHAL_DESTROYPALETTEDATA FAR *LPDDHAL_DESTROYPALETTEDATA;
typedef struct _DDHAL_SETENTRIESDATA FAR *LPDDHAL_SETENTRIESDATA;
typedef struct _DDHAL_BLTDATA FAR *LPDDHAL_BLTDATA;
typedef struct _DDHAL_LOCKDATA FAR *LPDDHAL_LOCKDATA;
typedef struct _DDHAL_UNLOCKDATA FAR *LPDDHAL_UNLOCKDATA;
typedef struct _DDHAL_UPDATEOVERLAYDATA FAR *LPDDHAL_UPDATEOVERLAYDATA;
typedef struct _DDHAL_SETOVERLAYPOSITIONDATA FAR *LPDDHAL_SETOVERLAYPOSITIONDATA;
typedef struct _DDHAL_SETPALETTEDATA FAR *LPDDHAL_SETPALETTEDATA;
typedef struct _DDHAL_FLIPDATA FAR *LPDDHAL_FLIPDATA;
typedef struct _DDHAL_DESTROYSURFACEDATA FAR *LPDDHAL_DESTROYSURFACEDATA;
typedef struct _DDHAL_SETCLIPLISTDATA FAR *LPDDHAL_SETCLIPLISTDATA;
typedef struct _DDHAL_ADDATTACHEDSURFACEDATA FAR *LPDDHAL_ADDATTACHEDSURFACEDATA;
typedef struct _DDHAL_SETCOLORKEYDATA FAR *LPDDHAL_SETCOLORKEYDATA;
typedef struct _DDHAL_GETBLTSTATUSDATA FAR *LPDDHAL_GETBLTSTATUSDATA;
typedef struct _DDHAL_GETFLIPSTATUSDATA FAR *LPDDHAL_GETFLIPSTATUSDATA;
typedef struct _DDHAL_SETEXCLUSIVEMODEDATA FAR *LPDDHAL_SETEXCLUSIVEMODEDATA;
typedef struct _DDHAL_FLIPTOGDISURFACEDATA FAR *LPDDHAL_FLIPTOGDISURFACEDATA;
typedef struct _DDHAL_CANCREATEVPORTDATA FAR *LPDDHAL_CANCREATEVPORTDATA;
typedef struct _DDHAL_CREATEVPORTDATA FAR *LPDDHAL_CREATEVPORTDATA;
typedef struct _DDHAL_FLIPVPORTDATA FAR *LPDDHAL_FLIPVPORTDATA;
typedef struct _DDHAL_GETVPORTCONNECTDATA FAR *LPDDHAL_GETVPORTCONNECTDATA;
typedef struct _DDHAL_GETVPORTBANDWIDTHDATA FAR *LPDDHAL_GETVPORTBANDWIDTHDATA;
typedef struct _DDHAL_GETVPORTINPUTFORMATDATA FAR *LPDDHAL_GETVPORTINPUTFORMATDATA;
typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA FAR *LPDDHAL_GETVPORTOUTPUTFORMATDATA;
typedef struct _DDHAL_GETVPORTFIELDDATA FAR *LPDDHAL_GETVPORTFIELDDATA;
typedef struct _DDHAL_GETVPORTLINEDATA FAR *LPDDHAL_GETVPORTLINEDATA;
typedef struct _DDHAL_DESTROYVPORTDATA FAR *LPDDHAL_DESTROYVPORTDATA;
typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA FAR *LPDDHAL_GETVPORTFLIPSTATUSDATA;
typedef struct _DDHAL_UPDATEVPORTDATA FAR *LPDDHAL_UPDATEVPORTDATA;
typedef struct _DDHAL_WAITFORVPORTSYNCDATA FAR *LPDDHAL_WAITFORVPORTSYNCDATA;
typedef struct _DDHAL_GETVPORTSIGNALDATA FAR *LPDDHAL_GETVPORTSIGNALDATA;
typedef struct _DDHAL_VPORTCOLORDATA FAR *LPDDHAL_VPORTCOLORDATA;
typedef struct _DDHAL_COLORCONTROLDATA FAR *LPDDHAL_COLORCONTROLDATA;
typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA FAR *LPDDHAL_GETAVAILDRIVERMEMORYDATA;
typedef struct _DDHAL_UPDATENONLOCALHEAPDATA FAR *LPDDHAL_UPDATENONLOCALHEAPDATA;
typedef struct _DDHAL_GETHEAPALIGNMENTDATA FAR *LPDDHAL_GETHEAPALIGNMENTDATA;
typedef struct _DDHAL_GETDRIVERINFODATA FAR *LPDDHAL_GETDRIVERINFODATA;
typedef struct _DDHAL_SYNCSURFACEDATA FAR *LPDDHAL_SYNCSURFACEDATA;
typedef struct _DDHAL_SYNCVIDEOPORTDATA FAR *LPDDHAL_SYNCVIDEOPORTDATA;
typedef struct _DDHAL_GETMOCOMPGUIDSDATA FAR *LPDDHAL_GETMOCOMPGUIDSDATA;
typedef struct _DDHAL_GETMOCOMPFORMATSDATA FAR *LPDDHAL_GETMOCOMPFORMATSDATA;
typedef struct _DDHAL_CREATEMOCOMPDATA FAR *LPDDHAL_CREATEMOCOMPDATA;
typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA FAR *LPDDHAL_GETMOCOMPCOMPBUFFDATA;
typedef struct _DDHAL_GETINTERNALMOCOMPDATA FAR *LPDDHAL_GETINTERNALMOCOMPDATA;
typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA FAR *LPDDHAL_BEGINMOCOMPFRAMEDATA;
typedef struct _DDHAL_ENDMOCOMPFRAMEDATA FAR *LPDDHAL_ENDMOCOMPFRAMEDATA;
typedef struct _DDHAL_RENDERMOCOMPDATA FAR *LPDDHAL_RENDERMOCOMPDATA;
typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA FAR *LPDDHAL_QUERYMOCOMPSTATUSDATA;
typedef struct _DDHAL_DESTROYMOCOMPDATA FAR *LPDDHAL_DESTROYMOCOMPDATA;
typedef struct _DDHAL_CREATESURFACEEXDATA FAR *LPDDHAL_CREATESURFACEEXDATA;
typedef struct _DDHAL_GETDRIVERSTATEDATA FAR *LPDDHAL_GETDRIVERSTATEDATA;
typedef struct _DDHAL_DESTROYDDLOCALDATA FAR *LPDDHAL_DESTROYDDLOCALDATA;
/*
* value in the fpVidMem; indicates dwBlockSize is valid (surface object)
*/
#define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l
/*
* Values in fpVidMem: Indicates dwLinearSizde is valid.
* THIS VALUE CAN ONLY BE USED BY A D3D Optimize DRIVER FUNCTION
* IT IS INVALID FOR A DRIVER TO RETURN THIS VALUE FROM CreateSurface32.
*/
#define DDHAL_PLEASEALLOC_LINEARSIZE 0x00000003l
/*
* DRIVER SERVICES
*
* These services exported from ddraw.dll can be called by the HAL.
* They are intended for use by the d3d Optimize HAL call.
*/
extern HRESULT DDAPI LateAllocateSurfaceMem(
LPDIRECTDRAWSURFACE lpSurface,
DWORD dwPleaseAllocType,
DWORD dwWidthInBytesOrSize,
DWORD dwHeight);
LPDIRECTDRAWSURFACE GetNextMipMap(
LPDIRECTDRAWSURFACE lpLevel);
/*
* video memory data structures (passed in DDHALINFO)
*/
typedef struct _VIDMEM
{
DWORD dwFlags; // flags
FLATPTR fpStart; // start of memory chunk
union
{
FLATPTR fpEnd; // end of memory chunk
DWORD dwWidth; // width of chunk (rectanglar memory)
};
DDSCAPS ddsCaps; // what this memory CANNOT be used for
DDSCAPS ddsCapsAlt; // what this memory CANNOT be used for if it must
union
{
LPVMEMHEAP lpHeap; // heap pointer, used by DDRAW
DWORD dwHeight; // height of chunk (rectanguler memory)
};
} VIDMEM;
typedef VIDMEM FAR *LPVIDMEM;
/*
* flags for vidmem struct
*/
#define VIDMEM_ISLINEAR 0x00000001l // heap is linear
#define VIDMEM_ISRECTANGULAR 0x00000002l // heap is rectangular
#define VIDMEM_ISHEAP 0x00000004l // heap is preallocated by driver
#define VIDMEM_ISNONLOCAL 0x00000008l // heap populated with non-local video memory
#define VIDMEM_ISWC 0x00000010l // heap populated with write combining memory
#define VIDMEM_HEAPDISABLED 0x00000020l // heap disabled
typedef struct _VIDMEMINFO
{
/* 0*/ FLATPTR fpPrimary; // pointer to primary surface
/* 4*/ DWORD dwFlags; // flags
/* 8*/ DWORD dwDisplayWidth; // current display width
/* c*/ DWORD dwDisplayHeight; // current display height
/*10*/ LONG lDisplayPitch; // current display pitch
/*14*/ DDPIXELFORMAT ddpfDisplay; // pixel format of display
/*34*/ DWORD dwOffscreenAlign; // byte alignment for offscreen surfaces
/*38*/ DWORD dwOverlayAlign; // byte alignment for overlays
/*3c*/ DWORD dwTextureAlign; // byte alignment for textures
/*40*/ DWORD dwZBufferAlign; // byte alignment for z buffers
/*44*/ DWORD dwAlphaAlign; // byte alignment for alpha
/*48*/ DWORD dwNumHeaps; // number of memory heaps in vmList
/*4c*/ LPVIDMEM pvmList; // array of heaps
} VIDMEMINFO;
typedef VIDMEMINFO FAR *LPVIDMEMINFO;
typedef struct _HEAPALIAS // PRIVATE
{
FLATPTR fpVidMem; // start of aliased vid mem
LPVOID lpAlias; // start of heap alias
DWORD dwAliasSize; // size of alias allocated
} HEAPALIAS;
typedef HEAPALIAS FAR *LPHEAPALIAS;
typedef struct _HEAPALIASINFO // PRIVATE
{
DWORD dwRefCnt; // reference count of these aliases
DWORD dwFlags; // flags
DWORD dwNumHeaps; // number of aliased heaps
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -