From: Elizabeth Figura zfigura@codeweavers.com
This handle is eventually used by DXGI to call D3D11CoreRegisterLayers().
apitrace ships a d3d11.dll which has the same name, but does not export D3D11CoreRegisterLayers(). Using GetModuleHandle("d3d11.dll") here can then lead to a crash in dxgi if the apitrace wrapper DLL is returned. --- dlls/d3d11/d3d11_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/d3d11/d3d11_main.c b/dlls/d3d11/d3d11_main.c index 0dd83d53da1..75986318693 100644 --- a/dlls/d3d11/d3d11_main.c +++ b/dlls/d3d11/d3d11_main.c @@ -115,7 +115,8 @@ HRESULT WINAPI D3D11CoreCreateDevice(IDXGIFactory *factory, IDXGIAdapter *adapte TRACE("factory %p, adapter %p, flags %#x, feature_levels %p, levels %u, device %p.\n", factory, adapter, flags, feature_levels, levels, device);
- d3d11 = GetModuleHandleA("d3d11.dll"); + GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS + | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, (const WCHAR *)D3D11CoreCreateDevice, &d3d11); hr = DXGID3D10CreateDevice(d3d11, factory, adapter, flags, feature_levels, levels, (void **)&dxgi_device); if (FAILED(hr)) {