Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

452 lines
17 KiB

4 years ago
  1. /*==========================================================================;
  2. *
  3. * Copyright (C) 1995-1996 Microsoft Corporation. All Rights Reserved.
  4. *
  5. * File: d3dhal.h
  6. * Content: Direct3D HAL include file
  7. *@@BEGIN_MSINTERNAL
  8. * History:
  9. * Date By Reason
  10. * ==== == ======
  11. * 03/11/95 stevela Initial revision.
  12. * servank
  13. * 04/11/95 stevela Context added to call blocks.
  14. * Materials added. Required as lighting references
  15. * handles.
  16. * SetViewportData HAL function added.
  17. * 10/11/95 stevela Pack structures for driver -p4 option...
  18. * 11/11/95 stevela Remove definition of D3DHALCreateDriver.
  19. * Add lpDDSZ to D3DHAL_CONTEXTCREATEDATA.
  20. * Definition of lpLocalVertexBuffer changed to
  21. * LPD3DTLVERTEX.
  22. * 07/12/95 stevela Added texture swapping.
  23. * 18/12/95 stevela Added GetState and GetMatrix.
  24. * 17/02/95 stevela Use execute buffers for tl and h vertex buffers
  25. * 23/02/95 dougrab Change all handles to DWORD
  26. * 02/03/96 colinmc Minor build fix
  27. * 17/04/96 stevela Use ddraw.h externally and ddrawp.h internally
  28. *@@END_MSINTERNAL
  29. *
  30. ***************************************************************************/
  31. #ifndef _D3DHAL_H_
  32. #define _D3DHAL_H_
  33. //@@BEGIN_MSINTERNAL
  34. #include "ddrawp.h"
  35. #include "ddrawi.h"
  36. #if 0
  37. //@@END_MSINTERNAL
  38. #include "ddraw.h"
  39. //@@BEGIN_MSINTERNAL
  40. #endif
  41. //@@END_MSINTERNAL
  42. #include "d3dtypes.h"
  43. #include "d3dcaps.h"
  44. #include "d3di.h"
  45. #include "ddrawint.h"
  46. /*
  47. * If the HAL driver does not implement clipping, it must reserve at least
  48. * this much space at the end of the LocalVertexBuffer for use by the HEL
  49. * clipping. I.e. the vertex buffer contain dwNumVertices+dwNumClipVertices
  50. * vertices. No extra space is needed by the HEL clipping in the
  51. * LocalHVertexBuffer.
  52. */
  53. #define D3DHAL_NUMCLIPVERTICES 20
  54. /*
  55. * If no dwNumVertices is given, this is what will be used.
  56. */
  57. #define D3DHAL_DEFAULT_TL_NUM ((32 * 1024) / sizeof (D3DTLVERTEX))
  58. #define D3DHAL_DEFAULT_H_NUM ((32 * 1024) / sizeof (D3DHVERTEX))
  59. /* --------------------------------------------------------------
  60. * Instantiated by the HAL driver on driver connection.
  61. */
  62. typedef struct _D3DHAL_GLOBALDRIVERDATA {
  63. DWORD dwSize; // Size of this structure
  64. D3DDEVICEDESC hwCaps; // Capabilities of the hardware
  65. DWORD dwNumVertices; // see following comment
  66. DWORD dwNumClipVertices; // see following comment
  67. DWORD dwNumTextureFormats; // Number of texture formats
  68. LPDDSURFACEDESC lpTextureFormats; // Pointer to texture formats
  69. } D3DHAL_GLOBALDRIVERDATA;
  70. typedef D3DHAL_GLOBALDRIVERDATA *LPD3DHAL_GLOBALDRIVERDATA;
  71. /*
  72. * Regarding dwNumVertices, specify 0 if you are relying on the HEL to do
  73. * everything and you do not need the resultant TLVertex buffer to reside
  74. * in device memory.
  75. * The HAL driver will be asked to allocate dwNumVertices + dwNumClipVertices
  76. * in the case described above.
  77. */
  78. /* --------------------------------------------------------------
  79. * Argument to the HAL functions.
  80. */
  81. typedef struct _D3DHAL_CONTEXTCREATEDATA {
  82. LPDDRAWI_DIRECTDRAW_GBL lpDDGbl; // in: Driver struct
  83. LPDIRECTDRAWSURFACE lpDDS; // in: Surface to be used as target
  84. LPDIRECTDRAWSURFACE lpDDSZ; // in: Surface to be used as Z
  85. DWORD dwPID; // in: Current process id
  86. DWORD dwhContext; // out: Context handle
  87. HRESULT ddrval; // out: Return value
  88. } D3DHAL_CONTEXTCREATEDATA;
  89. typedef D3DHAL_CONTEXTCREATEDATA *LPD3DHAL_CONTEXTCREATEDATA;
  90. typedef struct _D3DHAL_CONTEXTDESTROYDATA {
  91. DWORD dwhContext; // in: Context handle
  92. HRESULT ddrval; // out: Return value
  93. } D3DHAL_CONTEXTDESTROYDATA;
  94. typedef D3DHAL_CONTEXTDESTROYDATA *LPD3DHAL_CONTEXTDESTROYDATA;
  95. typedef struct _D3DHAL_CONTEXTDESTROYALLDATA {
  96. DWORD dwPID; // in: Process id to destroy contexts for
  97. HRESULT ddrval; // out: Return value
  98. } D3DHAL_CONTEXTDESTROYALLDATA;
  99. typedef D3DHAL_CONTEXTDESTROYALLDATA *LPD3DHAL_CONTEXTDESTROYALLDATA;
  100. typedef struct _D3DHAL_SCENECAPTUREDATA {
  101. DWORD dwhContext; // in: Context handle
  102. DWORD dwFlag; // in: Indicates beginning or end
  103. HRESULT ddrval; // out: Return value
  104. } D3DHAL_SCENECAPTUREDATA;
  105. typedef D3DHAL_SCENECAPTUREDATA *LPD3DHAL_SCENECAPTUREDATA;
  106. typedef struct _D3DHAL_EXECUTEDATA {
  107. DWORD dwhContext; // in: Context handle
  108. DWORD dwOffset; // in/out: Where to start/error occured
  109. DWORD dwFlags; // in: Flags for this execute
  110. DWORD dwStatus; // in/out: Condition branch status
  111. D3DI_EXECUTEDATA deExData; // in: Execute data describing buffer
  112. LPDIRECTDRAWSURFACE lpExeBuf; // in: Execute buffer containing data
  113. LPDIRECTDRAWSURFACE lpTLBuf; // in: Execute buffer containing TLVertex data
  114. // Only provided if HEL performing transform
  115. D3DINSTRUCTION diInstruction; // in: Optional one off instruction
  116. HRESULT ddrval; // out: Return value
  117. } D3DHAL_EXECUTEDATA;
  118. typedef D3DHAL_EXECUTEDATA *LPD3DHAL_EXECUTEDATA;
  119. typedef struct _D3DHAL_EXECUTECLIPPEDDATA {
  120. DWORD dwhContext; // in: Context handle
  121. DWORD dwOffset; // in/out: Where to start/error occured
  122. DWORD dwFlags; // in: Flags for this execute
  123. DWORD dwStatus; // in/out: Condition branch status
  124. D3DI_EXECUTEDATA deExData; // in: Execute data describing buffer
  125. LPDIRECTDRAWSURFACE lpExeBuf; // in: Execute buffer containing data
  126. LPDIRECTDRAWSURFACE lpTLBuf; // in: Execute buffer containing TLVertex data
  127. // Only provided if HEL performing transform
  128. LPDIRECTDRAWSURFACE lpHBuf; // in: Execute buffer containing HVertex data
  129. // Only provided if HEL performing transform
  130. D3DINSTRUCTION diInstruction; // in: Optional one off instruction
  131. HRESULT ddrval; // out: Return value
  132. } D3DHAL_EXECUTECLIPPEDDATA;
  133. typedef D3DHAL_EXECUTECLIPPEDDATA *LPD3DHAL_EXECUTECLIPPEDDATA;
  134. typedef struct _D3DHAL_RENDERSTATEDATA {
  135. DWORD dwhContext; // in: Context handle
  136. DWORD dwOffset; // in: Where to find states in buffer
  137. DWORD dwCount; // in: How many states to process
  138. LPDIRECTDRAWSURFACE lpExeBuf; // in: Execute buffer containing data
  139. HRESULT ddrval; // out: Return value
  140. } D3DHAL_RENDERSTATEDATA;
  141. typedef D3DHAL_RENDERSTATEDATA *LPD3DHAL_RENDERSTATEDATA;
  142. typedef struct _D3DHAL_RENDERPRIMITIVEDATA {
  143. DWORD dwhContext; // in: Context handle
  144. DWORD dwOffset; // in: Where to find primitive data in buffer
  145. DWORD dwStatus; // in/out: Condition branch status
  146. LPDIRECTDRAWSURFACE lpExeBuf; // in: Execute buffer containing data
  147. DWORD dwTLOffset; // in: Byte offset in lpTLBuf for start of vertex data
  148. LPDIRECTDRAWSURFACE lpTLBuf; // in: Execute buffer containing TLVertex data
  149. D3DINSTRUCTION diInstruction; // in: Primitive instruction
  150. HRESULT ddrval; // out: Return value
  151. } D3DHAL_RENDERPRIMITIVEDATA;
  152. typedef D3DHAL_RENDERPRIMITIVEDATA *LPD3DHAL_RENDERPRIMITIVEDATA;
  153. typedef struct _D3DHAL_TEXTURECREATEDATA {
  154. DWORD dwhContext; // in: Context handle
  155. LPDIRECTDRAWSURFACE lpDDS; // in: Pointer to surface object
  156. DWORD dwHandle; // out: Handle to texture
  157. HRESULT ddrval; // out: Return value
  158. } D3DHAL_TEXTURECREATEDATA;
  159. typedef D3DHAL_TEXTURECREATEDATA *LPD3DHAL_TEXTURECREATEDATA;
  160. typedef struct _D3DHAL_TEXTUREDESTROYDATA {
  161. DWORD dwhContext; // in: Context handle
  162. DWORD dwHandle; // in: Handle to texture
  163. HRESULT ddrval; // out: Return value
  164. } D3DHAL_TEXTUREDESTROYDATA;
  165. typedef D3DHAL_TEXTUREDESTROYDATA *LPD3DHAL_TEXTUREDESTROYDATA;
  166. typedef struct _D3DHAL_TEXTURESWAPDATA {
  167. DWORD dwhContext; // in: Context handle
  168. DWORD dwHandle1; // in: Handle to texture 1
  169. DWORD dwHandle2; // in: Handle to texture 2
  170. HRESULT ddrval; // out: Return value
  171. } D3DHAL_TEXTURESWAPDATA;
  172. typedef D3DHAL_TEXTURESWAPDATA *LPD3DHAL_TEXTURESWAPDATA;
  173. typedef struct _D3DHAL_TEXTUREGETSURFDATA {
  174. DWORD dwhContext; // in: Context handle
  175. DWORD lpDDS; // out: Pointer to surface object
  176. DWORD dwHandle; // in: Handle to texture
  177. HRESULT ddrval; // out: Return value
  178. } D3DHAL_TEXTUREGETSURFDATA;
  179. typedef D3DHAL_TEXTUREGETSURFDATA *LPD3DHAL_TEXTUREGETSURFDATA;
  180. typedef struct _D3DHAL_MATRIXCREATEDATA {
  181. DWORD dwhContext; // in: Context handle
  182. DWORD dwHandle; // out: Handle to matrix
  183. HRESULT ddrval; // out: Return value
  184. } D3DHAL_MATRIXCREATEDATA;
  185. typedef D3DHAL_MATRIXCREATEDATA *LPD3DHAL_MATRIXCREATEDATA;
  186. typedef struct _D3DHAL_MATRIXDESTROYDATA {
  187. DWORD dwhContext; // in: Context handle
  188. DWORD dwHandle; // in: Handle to matrix
  189. HRESULT ddrval; // out: Return value
  190. } D3DHAL_MATRIXDESTROYDATA;
  191. typedef D3DHAL_MATRIXDESTROYDATA *LPD3DHAL_MATRIXDESTROYDATA;
  192. typedef struct _D3DHAL_MATRIXSETDATADATA {
  193. DWORD dwhContext; // in: Context handle
  194. DWORD dwHandle; // in: Handle to matrix
  195. D3DMATRIX dmMatrix; // in: Matrix data
  196. HRESULT ddrval; // out: Return value
  197. } D3DHAL_MATRIXSETDATADATA;
  198. typedef D3DHAL_MATRIXSETDATADATA *LPD3DHAL_MATRIXSETDATADATA;
  199. typedef struct _D3DHAL_MATRIXGETDATADATA {
  200. DWORD dwhContext; // in: Context handle
  201. DWORD dwHandle; // in: Handle to matrix
  202. D3DMATRIX dmMatrix; // out: Matrix data
  203. HRESULT ddrval; // out: Return value
  204. } D3DHAL_MATRIXGETDATADATA;
  205. typedef D3DHAL_MATRIXGETDATADATA *LPD3DHAL_MATRIXGETDATADATA;
  206. typedef struct _D3DHAL_SETVIEWPORTDATADATA {
  207. DWORD dwhContext; // in: Context handle
  208. DWORD dwViewportID; // in: ID of viewport
  209. D3DVIEWPORT dvViewData; // in: Viewport data
  210. HRESULT ddrval; // out: Return value
  211. } D3DHAL_SETVIEWPORTDATADATA;
  212. typedef D3DHAL_SETVIEWPORTDATADATA *LPD3DHAL_SETVIEWPORTDATADATA;
  213. typedef struct _D3DHAL_LIGHTSETDATA {
  214. DWORD dwhContext; // in: Context handle
  215. DWORD dwLight; // in: Which light to set
  216. D3DI_LIGHT dlLight; // in: Light data
  217. HRESULT ddrval; // out: Return value
  218. } D3DHAL_LIGHTSETDATA;
  219. typedef D3DHAL_LIGHTSETDATA *LPD3DHAL_LIGHTSETDATA;
  220. typedef struct _D3DHAL_MATERIALCREATEDATA {
  221. DWORD dwhContext; // in: Context handle
  222. DWORD dwHandle; // out: Handle to material
  223. D3DMATERIAL dmMaterial; // in: Material data
  224. HRESULT ddrval; // out: Return value
  225. } D3DHAL_MATERIALCREATEDATA;
  226. typedef D3DHAL_MATERIALCREATEDATA *LPD3DHAL_MATERIALCREATEDATA;
  227. typedef struct _D3DHAL_MATERIALDESTROYDATA {
  228. DWORD dwhContext; // in: Context handle
  229. DWORD dwHandle; // in: Handle to material
  230. HRESULT ddrval; // out: Return value
  231. } D3DHAL_MATERIALDESTROYDATA;
  232. typedef D3DHAL_MATERIALDESTROYDATA *LPD3DHAL_MATERIALDESTROYDATA;
  233. typedef struct _D3DHAL_MATERIALSETDATADATA {
  234. DWORD dwhContext; // in: Context handle
  235. DWORD dwHandle; // in: Handle to material
  236. D3DMATERIAL dmMaterial; // in: Material data
  237. HRESULT ddrval; // out: Return value
  238. } D3DHAL_MATERIALSETDATADATA;
  239. typedef D3DHAL_MATERIALSETDATADATA *LPD3DHAL_MATERIALSETDATADATA;
  240. typedef struct _D3DHAL_MATERIALGETDATADATA {
  241. DWORD dwhContext; // in: Context handle
  242. DWORD dwHandle; // in: Handle to material
  243. D3DMATERIAL dmMaterial; // out: Material data
  244. HRESULT ddrval; // out: Return value
  245. } D3DHAL_MATERIALGETDATADATA;
  246. typedef D3DHAL_MATERIALGETDATADATA *LPD3DHAL_MATERIALGETDATADATA;
  247. typedef struct _D3DHAL_GETSTATEDATA {
  248. DWORD dwhContext; // in: Context handle
  249. DWORD dwWhich; // in: Transform, lighting or render?
  250. D3DSTATE ddState; // in/out: State.
  251. HRESULT ddrval; // out: Return value
  252. } D3DHAL_GETSTATEDATA;
  253. typedef D3DHAL_GETSTATEDATA *LPD3DHAL_GETSTATEDATA;
  254. /* --------------------------------------------------------------
  255. * Flags for the data parameters.
  256. */
  257. /*
  258. * SceneCapture()
  259. * This is used as an indication to the driver that a scene is about to
  260. * start or end, and that it should capture data if required.
  261. */
  262. #define D3DHAL_SCENE_CAPTURE_START 0x00000000L
  263. #define D3DHAL_SCENE_CAPTURE_END 0x00000001L
  264. /*
  265. * Execute()
  266. */
  267. /*
  268. * Use the instruction stream starting at dwOffset.
  269. */
  270. #define D3DHAL_EXECUTE_NORMAL 0x00000000L
  271. /*
  272. * Use the optional instruction override (diInstruction) and return
  273. * after completion. dwOffset is the offset to the first primitive.
  274. */
  275. #define D3DHAL_EXECUTE_OVERRIDE 0x00000001L
  276. /*
  277. * GetState()
  278. * The driver will get passed a flag in dwWhich specifying which module
  279. * the state must come from. The driver then fills in ulArg[1] with the
  280. * appropriate value depending on the state type given in ddState.
  281. */
  282. /*
  283. * The following are used to get the state of a particular stage of the
  284. * pipeline.
  285. */
  286. #define D3DHALSTATE_GET_TRANSFORM 0x00000001L
  287. #define D3DHALSTATE_GET_LIGHT 0x00000002L
  288. #define D3DHALSTATE_GET_RENDER 0x00000004L
  289. /* --------------------------------------------------------------
  290. * Return values from HAL functions.
  291. */
  292. /*
  293. * The context passed in was bad.
  294. */
  295. #define D3DHAL_CONTEXT_BAD 0x000000200L
  296. /*
  297. * No more contexts left.
  298. */
  299. #define D3DHAL_OUTOFCONTEXTS 0x000000201L
  300. /*
  301. * Execute() and ExecuteClipped()
  302. */
  303. /*
  304. * Executed to completion via early out.
  305. * (e.g. totally clipped)
  306. */
  307. #define D3DHAL_EXECUTE_ABORT 0x00000210L
  308. /*
  309. * An unhandled instruction code was found (e.g. D3DOP_TRANSFORM).
  310. * The dwOffset parameter must be set to the offset of the unhandled
  311. * instruction.
  312. *
  313. * Only valid from Execute()
  314. */
  315. #define D3DHAL_EXECUTE_UNHANDLED 0x00000211L
  316. /* --------------------------------------------------------------
  317. * Direct3D HAL Table.
  318. * Instantiated by the HAL driver on connection.
  319. *
  320. * Calls take the form of:
  321. * retcode = HalCall(HalCallData* lpData);
  322. */
  323. typedef DWORD (__stdcall *LPD3DHAL_CONTEXTCREATECB) (LPD3DHAL_CONTEXTCREATEDATA);
  324. typedef DWORD (__stdcall *LPD3DHAL_CONTEXTDESTROYCB) (LPD3DHAL_CONTEXTDESTROYDATA);
  325. typedef DWORD (__stdcall *LPD3DHAL_CONTEXTDESTROYALLCB) (LPD3DHAL_CONTEXTDESTROYALLDATA);
  326. typedef DWORD (__stdcall *LPD3DHAL_SCENECAPTURECB) (LPD3DHAL_SCENECAPTUREDATA);
  327. typedef DWORD (__stdcall *LPD3DHAL_EXECUTECB) (LPD3DHAL_EXECUTEDATA);
  328. typedef DWORD (__stdcall *LPD3DHAL_EXECUTECLIPPEDCB) (LPD3DHAL_EXECUTECLIPPEDDATA);
  329. typedef DWORD (__stdcall *LPD3DHAL_RENDERSTATECB) (LPD3DHAL_RENDERSTATEDATA);
  330. typedef DWORD (__stdcall *LPD3DHAL_RENDERPRIMITIVECB) (LPD3DHAL_RENDERPRIMITIVEDATA);
  331. typedef DWORD (__stdcall *LPD3DHAL_EXECUTECLIPPEDCB) (LPD3DHAL_EXECUTECLIPPEDDATA);
  332. typedef DWORD (__stdcall *LPD3DHAL_TEXTURECREATECB) (LPD3DHAL_TEXTURECREATEDATA);
  333. typedef DWORD (__stdcall *LPD3DHAL_TEXTUREDESTROYCB) (LPD3DHAL_TEXTUREDESTROYDATA);
  334. typedef DWORD (__stdcall *LPD3DHAL_TEXTURESWAPCB) (LPD3DHAL_TEXTURESWAPDATA);
  335. typedef DWORD (__stdcall *LPD3DHAL_TEXTUREGETSURFCB) (LPD3DHAL_TEXTUREGETSURFDATA);
  336. typedef DWORD (__stdcall *LPD3DHAL_MATRIXCREATECB) (LPD3DHAL_MATRIXCREATEDATA);
  337. typedef DWORD (__stdcall *LPD3DHAL_MATRIXDESTROYCB) (LPD3DHAL_MATRIXDESTROYDATA);
  338. typedef DWORD (__stdcall *LPD3DHAL_MATRIXSETDATACB) (LPD3DHAL_MATRIXSETDATADATA);
  339. typedef DWORD (__stdcall *LPD3DHAL_MATRIXGETDATACB) (LPD3DHAL_MATRIXGETDATADATA);
  340. typedef DWORD (__stdcall *LPD3DHAL_SETVIEWPORTDATACB) (LPD3DHAL_SETVIEWPORTDATADATA);
  341. typedef DWORD (__stdcall *LPD3DHAL_LIGHTSETCB) (LPD3DHAL_LIGHTSETDATA);
  342. typedef DWORD (__stdcall *LPD3DHAL_MATERIALCREATECB) (LPD3DHAL_MATERIALCREATEDATA);
  343. typedef DWORD (__stdcall *LPD3DHAL_MATERIALDESTROYCB) (LPD3DHAL_MATERIALDESTROYDATA);
  344. typedef DWORD (__stdcall *LPD3DHAL_MATERIALSETDATACB) (LPD3DHAL_MATERIALSETDATADATA);
  345. typedef DWORD (__stdcall *LPD3DHAL_MATERIALGETDATACB) (LPD3DHAL_MATERIALGETDATADATA);
  346. typedef DWORD (__stdcall *LPD3DHAL_GETSTATECB) (LPD3DHAL_GETSTATEDATA);
  347. typedef struct _D3DHAL_CALLBACKS {
  348. DWORD dwSize;
  349. // Device context
  350. LPD3DHAL_CONTEXTCREATECB ContextCreate;
  351. LPD3DHAL_CONTEXTDESTROYCB ContextDestroy;
  352. LPD3DHAL_CONTEXTDESTROYALLCB ContextDestroyAll;
  353. // Scene Capture
  354. LPD3DHAL_SCENECAPTURECB SceneCapture;
  355. // Execution
  356. LPD3DHAL_EXECUTECB Execute;
  357. LPD3DHAL_EXECUTECLIPPEDCB ExecuteClipped;
  358. LPD3DHAL_RENDERSTATECB RenderState;
  359. LPD3DHAL_RENDERPRIMITIVECB RenderPrimitive;
  360. DWORD dwReserved; // Must be zero
  361. // Textures
  362. LPD3DHAL_TEXTURECREATECB TextureCreate;
  363. LPD3DHAL_TEXTUREDESTROYCB TextureDestroy;
  364. LPD3DHAL_TEXTURESWAPCB TextureSwap;
  365. LPD3DHAL_TEXTUREGETSURFCB TextureGetSurf;
  366. // Transform
  367. LPD3DHAL_MATRIXCREATECB MatrixCreate;
  368. LPD3DHAL_MATRIXDESTROYCB MatrixDestroy;
  369. LPD3DHAL_MATRIXSETDATACB MatrixSetData;
  370. LPD3DHAL_MATRIXGETDATACB MatrixGetData;
  371. LPD3DHAL_SETVIEWPORTDATACB SetViewportData;
  372. // Lighting
  373. LPD3DHAL_LIGHTSETCB LightSet;
  374. LPD3DHAL_MATERIALCREATECB MaterialCreate;
  375. LPD3DHAL_MATERIALDESTROYCB MaterialDestroy;
  376. LPD3DHAL_MATERIALSETDATACB MaterialSetData;
  377. LPD3DHAL_MATERIALGETDATACB MaterialGetData;
  378. // Pipeline state
  379. LPD3DHAL_GETSTATECB GetState;
  380. DWORD dwReserved0; // Must be zero
  381. DWORD dwReserved1; // Must be zero
  382. DWORD dwReserved2; // Must be zero
  383. DWORD dwReserved3; // Must be zero
  384. DWORD dwReserved4; // Must be zero
  385. DWORD dwReserved5; // Must be zero
  386. DWORD dwReserved6; // Must be zero
  387. DWORD dwReserved7; // Must be zero
  388. DWORD dwReserved8; // Must be zero
  389. DWORD dwReserved9; // Must be zero
  390. } D3DHAL_CALLBACKS;
  391. typedef D3DHAL_CALLBACKS *LPD3DHAL_CALLBACKS;
  392. #define D3DHAL_SIZE_V1 sizeof( D3DHAL_CALLBACKS )
  393. #endif /* _D3DHAL_H */