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.
55 lines
1.6 KiB
55 lines
1.6 KiB
#include "pch.cpp"
|
|
#pragma hdrstop
|
|
|
|
HRESULT D3DAPI katmai_FEContextCreate(DWORD dwFlags, LPD3DFE_PVFUNCS *lpLeafFuncs)
|
|
{
|
|
LPD3DFE_CONTEXTCREATE pfnFEContextCreate = NULL;
|
|
|
|
HKEY hKey;
|
|
LONG lRet;
|
|
lRet = RegOpenKey( HKEY_LOCAL_MACHINE, RESPATH_D3D, &hKey );
|
|
if ( lRet == ERROR_SUCCESS )
|
|
{
|
|
char filename[_MAX_PATH];
|
|
DWORD dwSize = sizeof(filename);
|
|
DWORD dwType;
|
|
lRet = RegQueryValueEx(hKey,
|
|
"GeometryDriver",
|
|
NULL,
|
|
&dwType,
|
|
(LPBYTE) filename,
|
|
&dwSize);
|
|
if (lRet == ERROR_SUCCESS && dwType == REG_SZ)
|
|
{
|
|
HINSTANCE hGeometryDLL;
|
|
hGeometryDLL = LoadLibrary(filename);
|
|
if (hGeometryDLL)
|
|
{
|
|
pfnFEContextCreate = (LPD3DFE_CONTEXTCREATE) GetProcAddress(hGeometryDLL, "FEContextCreate");
|
|
}
|
|
else
|
|
{
|
|
D3D_ERR("LoadLibrary failed on GeometryDriver");
|
|
goto _error_exit;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
D3D_ERR("RegQueryValue failed on GeometryDriver");
|
|
goto _error_exit;
|
|
}
|
|
RegCloseKey( hKey );
|
|
}
|
|
else
|
|
{
|
|
D3D_ERR("RegOpenKey failed on GeometryDriver");
|
|
goto _error_exit;
|
|
}
|
|
|
|
// here if we think we have a valid pfnFEContextCreate
|
|
return(pfnFEContextCreate(dwFlags, lpLeafFuncs));
|
|
|
|
|
|
_error_exit:
|
|
return DDERR_GENERIC;
|
|
}
|