/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS ReactX * FILE: dll/directx/d3d9/d3d9_baseobject.h * PURPOSE: Direct3D9's base object * PROGRAMERS: Gregor Gullwi */ #ifndef _D3D9_BASEOBJECT_H_ #define _D3D9_BASEOBJECT_H_ #include "d3d9_common.h" #include struct _D3D9BaseObject; struct _Direct3DDevice9_INT; enum REF_TYPE { RT_EXTERNAL, RT_BUILTIN, RT_INTERNAL, }; typedef struct _D3D9BaseObjectVtbl { VOID (*Destroy)(struct _D3D9BaseObject* pBaseObject, BOOL bFreeThis); } ID3D9BaseObjectVtbl; typedef struct _D3D9BaseObject { /* 0x0000 */ ID3D9BaseObjectVtbl* lpVtbl; /* 0x0004 */ LONG lRefCnt; /* 0x0008 */ DWORD dwNumUsed; /* 0x000c */ IUnknown* pUnknown; /* 0x0010 */ DWORD dwUnknown0010; // Index? Unique id? /* 0x0014 */ HANDLE hKernelHandle; /* 0x0018 */ LPDWORD dwUnknown0018; /* 0x001c */ enum REF_TYPE RefType; } D3D9BaseObject; VOID InitD3D9BaseObject(D3D9BaseObject* pBaseObject, enum REF_TYPE RefType, IUnknown* pUnknown); ULONG D3D9BaseObject_AddRef(D3D9BaseObject* pBaseObject); ULONG D3D9BaseObject_Release(D3D9BaseObject* pBaseObject); HRESULT D3D9BaseObject_GetDevice(D3D9BaseObject* pBaseObject, IDirect3DDevice9** ppDevice); HRESULT D3D9BaseObject_GetDeviceInt(D3D9BaseObject* pBaseObject, struct _Direct3DDevice9_INT** ppDevice); VOID D3D9BaseObject_LockDevice(D3D9BaseObject* pBaseObject); VOID D3D9BaseObject_UnlockDevice(D3D9BaseObject* pBaseObject); #endif // _D3D9_BASEOBJECT_H_