Qu'est-ce qu'une raison?appelant IDirect3D9 :: CreateDevice() à partir de DllMain se bloque
De DllMain() sur DLL_PROCESS_ATTACH J'appelle IDirect3D9 :: CreateDevice() et il se bloque
Codeest simple, comme:
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
if (ul_reason_for_call = DLL_PROCESS_ATTACH) {
IDirect3D9* d3d = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS pp = {};
pp.BackBufferWidth = 1;
pp.BackBufferHeight = 1;
pp.BackBufferFormat = D3DFMT_X8R8G8B8;
pp.BackBufferCount = 1;
pp.SwapEffect = D3DSWAPEFFECT_DISCARD;
pp.Windowed = TRUE;
IDirect3DDevice9* device = NULL;
HRESULT hr = d3d->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
GetDesktopWindow(),
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&pp,
&device);
device->Release();
d3d->Release();
}
return TRUE;
}
GetDesktopWindow() est utilisé pour la simplicité, je essayé de créer sa propre fenêtre et l'utiliser, le même résultat
Eh oui, il est vrai, résolu cela en fraie un autre fil et de faire tout ce que je besoin là-bas (sans attendre dans DllMain cos ce raccroche aussi) –
@ Andrew: Accepter sa réponse alors! :) – Goz
fait, désolé pour le retard :) –