mirror of
https://github.com/reactos/reactos.git
synced 2025-04-22 13:10:39 +00:00
* Added helper function to read Direct3D registry properties
* Started implementing Direct3DCreate9 svn path=/trunk/; revision=31206
This commit is contained in:
parent
2125ffa5a5
commit
9cae851aec
5 changed files with 95 additions and 2 deletions
|
@ -1,5 +1,15 @@
|
||||||
|
/*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS ReactX
|
||||||
|
* FILE: dll/directx/d3d9/d3d9.c
|
||||||
|
* PURPOSE: d3d9.dll implementation
|
||||||
|
* PROGRAMERS: Magnus Olsen <greatlrd (at) reactos (dot) org>
|
||||||
|
* Gregor Brunmar <gregor (dot) brunmar (at) home (dot) se>
|
||||||
|
*/
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include "d3d9_private.h"
|
#include "d3d9_private.h"
|
||||||
|
#include "d3d9_helpers.h"
|
||||||
|
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
@ -41,8 +51,31 @@ HRESULT DebugSetMute(DWORD dw1)
|
||||||
DLLAPI
|
DLLAPI
|
||||||
IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion)
|
IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion)
|
||||||
{
|
{
|
||||||
|
HINSTANCE hDebugDll;
|
||||||
|
DWORD LoadDebugDll;
|
||||||
|
DWORD LoadDebugDllSize;
|
||||||
|
LPDIRECT3D9 D3D9Obj = 0;
|
||||||
|
LPDIRECT3DCREATE9 DebugDirect3DCreate9 = 0;
|
||||||
|
|
||||||
UNIMPLEMENTED
|
UNIMPLEMENTED
|
||||||
return 0;
|
|
||||||
|
LoadDebugDllSize = sizeof(LoadDebugDll);
|
||||||
|
if (ReadRegistryValue(REG_DWORD, "LoadDebugRuntime", (LPBYTE)&LoadDebugDll, &LoadDebugDllSize))
|
||||||
|
{
|
||||||
|
if (0 != LoadDebugDll)
|
||||||
|
{
|
||||||
|
hDebugDll = LoadLibrary("d3d9d.dll");
|
||||||
|
|
||||||
|
if (0 != hDebugDll)
|
||||||
|
{
|
||||||
|
DebugDirect3DCreate9 = (LPDIRECT3DCREATE9)GetProcAddress(hDebugDll, "Direct3DCreate9");
|
||||||
|
|
||||||
|
D3D9Obj = DebugDirect3DCreate9(SDKVersion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return D3D9Obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
|
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
|
||||||
|
|
|
@ -2,6 +2,11 @@
|
||||||
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
|
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
|
||||||
<module name="d3d9" type="win32dll" entrypoint="0" installbase="system32" installname="d3d9.dll">
|
<module name="d3d9" type="win32dll" entrypoint="0" installbase="system32" installname="d3d9.dll">
|
||||||
<importlibrary definition="d3d9.def" />
|
<importlibrary definition="d3d9.def" />
|
||||||
|
|
||||||
|
<library>advapi32</library>
|
||||||
|
<library>kernel32</library>
|
||||||
|
|
||||||
<file>d3d9.c</file>
|
<file>d3d9.c</file>
|
||||||
|
<file>d3d9_helpers.c</file>
|
||||||
<file>d3d9.rc</file>
|
<file>d3d9.rc</file>
|
||||||
</module>
|
</module>
|
||||||
|
|
34
reactos/dll/directx/d3d9/d3d9_helpers.c
Normal file
34
reactos/dll/directx/d3d9/d3d9_helpers.c
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS ReactX
|
||||||
|
* FILE: dll/directx/d3d9/d3d9_helpers.c
|
||||||
|
* PURPOSE: d3d9.dll helper functions
|
||||||
|
* PROGRAMERS: Gregor Brunmar <gregor (dot) brunmar (at) home (dot) se>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "d3d9_helpers.h"
|
||||||
|
|
||||||
|
|
||||||
|
static LPCSTR D3dDebugRegPath = "Software\\Microsoft\\Direct3D";
|
||||||
|
|
||||||
|
BOOL ReadRegistryValue(IN DWORD ValueType, IN LPCSTR ValueName, OUT LPBYTE DataBuffer, IN OUT LPDWORD DataBufferSize)
|
||||||
|
{
|
||||||
|
HKEY hKey;
|
||||||
|
DWORD Type;
|
||||||
|
LONG Ret;
|
||||||
|
|
||||||
|
if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, D3dDebugRegPath, 0, KEY_QUERY_VALUE, &hKey))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
Ret = RegQueryValueEx(hKey, ValueName, 0, &Type, DataBuffer, DataBufferSize);
|
||||||
|
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
|
||||||
|
if (ERROR_SUCCESS != Ret)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (Type != ValueType)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
11
reactos/dll/directx/d3d9/d3d9_helpers.h
Normal file
11
reactos/dll/directx/d3d9/d3d9_helpers.h
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
/*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS ReactX
|
||||||
|
* FILE: dll/directx/d3d9/d3d9_helpers.h
|
||||||
|
* PURPOSE: d3d9.dll helper functions
|
||||||
|
* PROGRAMERS: Gregor Brunmar <gregor (dot) brunmar (at) home (dot) se>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
BOOL ReadRegistryValue(IN DWORD ValueType, IN LPCSTR ValueName, OUT LPBYTE DataBuffer, IN OUT LPDWORD DataBufferSize);
|
|
@ -1,8 +1,18 @@
|
||||||
|
/*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS ReactX
|
||||||
|
* FILE: dll/directx/d3d9/d3d9_helpers.c
|
||||||
|
* PURPOSE: d3d9.dll helper functions
|
||||||
|
* PROGRAMERS: Gregor Brunmar <gregor (dot) brunmar (at) home (dot) se>
|
||||||
|
*/
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <d3d9.h>
|
#include <d3d9.h>
|
||||||
|
|
||||||
#define DLLAPI __declspec(dllexport)
|
#define DLLAPI __declspec(dllexport)
|
||||||
|
|
||||||
|
typedef IDirect3D9* WINAPI (*LPDIRECT3DCREATE9)(UINT);
|
||||||
|
|
||||||
struct _tagDIRECTD3D9_INT_
|
struct _tagDIRECTD3D9_INT_
|
||||||
{
|
{
|
||||||
/* 0x0000 */ LPVOID lpVtbl; /* LPDIRECTD3D9 functoions table */
|
/* 0x0000 */ LPVOID lpVtbl; /* LPDIRECTD3D9 functoions table */
|
||||||
|
@ -11,7 +21,7 @@ struct _tagDIRECTD3D9_INT_
|
||||||
/* 0x0020 */ DWORD dwProcessId;
|
/* 0x0020 */ DWORD dwProcessId;
|
||||||
/* 0x0024 */ struct _tagDIRECTD3D9_INT_ * lpInt;
|
/* 0x0024 */ struct _tagDIRECTD3D9_INT_ * lpInt;
|
||||||
/* 0x0028 */ DWORD dwIntRefCnt; /* Increases and decreases by AddRef() and Release() */
|
/* 0x0028 */ DWORD dwIntRefCnt; /* Increases and decreases by AddRef() and Release() */
|
||||||
/* 0x002c */ DWORD unknown000011; /* 0x00000001 - Probably AdapterIndex */
|
/* 0x002c */ DWORD unknown000011; /* 0x00000001 - Probably AdapterIndex */
|
||||||
/* 0x0030 */ GUID DisplayGuid; /*? Always {67685559-3106-11D0-B971-00AA00342F9F} ? */
|
/* 0x0030 */ GUID DisplayGuid; /*? Always {67685559-3106-11D0-B971-00AA00342F9F} ? */
|
||||||
/* 0x0040 */ CHAR DeviceName[16];
|
/* 0x0040 */ CHAR DeviceName[16];
|
||||||
/* 0x0050 */ DWORD unknown000020;
|
/* 0x0050 */ DWORD unknown000020;
|
||||||
|
|
Loading…
Reference in a new issue