reactos/dll/directx/d3d9/d3d9_baseobject.h

50 lines
1.5 KiB
C

/*
* 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 <gbrunmar (dot) ros (at) gmail (dot) com>
*/
#ifndef _D3D9_BASEOBJECT_H_
#define _D3D9_BASEOBJECT_H_
#include "d3d9_common.h"
#include <d3d9.h>
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_