2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS ReactX
4 * FILE: dll/directx/d3d9/d3d9_baseobject.h
5 * PURPOSE: Direct3D9's base object
6 * PROGRAMERS: Gregor Gullwi <gbrunmar (dot) ros (at) gmail (dot) com>
8 #ifndef _D3D9_BASEOBJECT_H_
9 #define _D3D9_BASEOBJECT_H_
11 #include "d3d9_common.h"
14 struct _D3D9BaseObject
;
15 struct _Direct3DDevice9_INT
;
24 typedef struct _D3D9BaseObjectVtbl
26 VOID (*Destroy
)(struct _D3D9BaseObject
* pBaseObject
, BOOL bFreeThis
);
27 } ID3D9BaseObjectVtbl
;
29 typedef struct _D3D9BaseObject
31 /* 0x0000 */ ID3D9BaseObjectVtbl
* lpVtbl
;
32 /* 0x0004 */ LONG lRefCnt
;
33 /* 0x0008 */ DWORD dwNumUsed
;
34 /* 0x000c */ IUnknown
* pUnknown
;
35 /* 0x0010 */ DWORD dwUnknown0010
; // Index? Unique id?
36 /* 0x0014 */ HANDLE hKernelHandle
;
37 /* 0x0018 */ LPDWORD dwUnknown0018
;
38 /* 0x001c */ enum REF_TYPE RefType
;
41 VOID
InitD3D9BaseObject(D3D9BaseObject
* pBaseObject
, enum REF_TYPE RefType
, IUnknown
* pUnknown
);
43 ULONG
D3D9BaseObject_AddRef(D3D9BaseObject
* pBaseObject
);
44 ULONG
D3D9BaseObject_Release(D3D9BaseObject
* pBaseObject
);
45 HRESULT
D3D9BaseObject_GetDevice(D3D9BaseObject
* pBaseObject
, IDirect3DDevice9
** ppDevice
);
46 HRESULT
D3D9BaseObject_GetDeviceInt(D3D9BaseObject
* pBaseObject
, struct _Direct3DDevice9_INT
** ppDevice
);
47 VOID
D3D9BaseObject_LockDevice(D3D9BaseObject
* pBaseObject
);
48 VOID
D3D9BaseObject_UnlockDevice(D3D9BaseObject
* pBaseObject
);
50 #endif // _D3D9_BASEOBJECT_H_