Commit f95f4660 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

ddraw: Prevent ddraw from being unloaded.

parent 194ee40e
......@@ -812,6 +812,7 @@ DllMain(HINSTANCE hInstDLL,
TRACE("(%p,%x,%p)\n", hInstDLL, Reason, lpv);
if (Reason == DLL_PROCESS_ATTACH)
{
static HMODULE ddraw_self;
char buffer[MAX_PATH+10];
DWORD size = sizeof(buffer);
HKEY hkey = 0;
......@@ -911,6 +912,16 @@ DllMain(HINSTANCE hInstDLL,
RegCloseKey( hkey );
}
/* Prevent the ddraw module from being unloaded. When switching to
* exclusive mode, we replace the window proc of the ddraw window. If
* an application would unload ddraw from the WM_DESTROY handler for
* that window, it would return to unmapped memory and die. Apparently
* this is supposed to work on Windows. We should probably use
* GET_MODULE_HANDLE_EX_FLAG_PIN for this, but that's not currently
* implemented. */
if (!GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (const WCHAR *)&ddraw_self, &ddraw_self))
ERR("Failed to get own module handle.\n");
instance = hInstDLL;
DisableThreadLibraryCalls(hInstDLL);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment