mirror of
https://gitlab.winehq.org/wine/wine.git
synced 2024-11-19 17:06:04 -07:00
rundll32: Don't bother cleaning up at process exit.
This commit is contained in:
parent
8a87ce3c4f
commit
194ada7583
1 changed files with 7 additions and 22 deletions
|
@ -276,17 +276,13 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE hOldInstance, LPWSTR szCmdLine
|
||||||
HWND hWnd;
|
HWND hWnd;
|
||||||
LPWSTR szDllName,szEntryPoint;
|
LPWSTR szDllName,szEntryPoint;
|
||||||
void *entry_point = NULL;
|
void *entry_point = NULL;
|
||||||
BOOL unicode = FALSE, win16 = FALSE, activated = FALSE;
|
BOOL unicode = FALSE, win16 = FALSE;
|
||||||
HMODULE hDll, hCtx = INVALID_HANDLE_VALUE;
|
HMODULE hDll, hCtx;
|
||||||
WCHAR path[MAX_PATH];
|
WCHAR path[MAX_PATH];
|
||||||
STARTUPINFOW info;
|
STARTUPINFOW info;
|
||||||
ULONG_PTR cookie;
|
ULONG_PTR cookie;
|
||||||
ACTCTXW ctx;
|
ACTCTXW ctx;
|
||||||
|
|
||||||
hWnd=NULL;
|
|
||||||
hDll=NULL;
|
|
||||||
szDllName=NULL;
|
|
||||||
|
|
||||||
/* Initialize the rundll32 class */
|
/* Initialize the rundll32 class */
|
||||||
register_class();
|
register_class();
|
||||||
hWnd = CreateWindowW(L"class_rundll32", L"rundll32", WS_OVERLAPPEDWINDOW|WS_VISIBLE,
|
hWnd = CreateWindowW(L"class_rundll32", L"rundll32", WS_OVERLAPPEDWINDOW|WS_VISIBLE,
|
||||||
|
@ -296,7 +292,7 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE hOldInstance, LPWSTR szCmdLine
|
||||||
WINE_TRACE("CmdLine=%s\n",wine_dbgstr_w(szCmdLine));
|
WINE_TRACE("CmdLine=%s\n",wine_dbgstr_w(szCmdLine));
|
||||||
szDllName = get_next_arg(&szCmdLine);
|
szDllName = get_next_arg(&szCmdLine);
|
||||||
if (!szDllName || *szDllName==0)
|
if (!szDllName || *szDllName==0)
|
||||||
goto CLEANUP;
|
return 0;
|
||||||
WINE_TRACE("DllName=%s\n",wine_dbgstr_w(szDllName));
|
WINE_TRACE("DllName=%s\n",wine_dbgstr_w(szDllName));
|
||||||
if ((szEntryPoint = wcschr(szDllName, ',' )))
|
if ((szEntryPoint = wcschr(szDllName, ',' )))
|
||||||
*szEntryPoint++=0;
|
*szEntryPoint++=0;
|
||||||
|
@ -314,7 +310,7 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE hOldInstance, LPWSTR szCmdLine
|
||||||
ctx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID;
|
ctx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID;
|
||||||
hCtx = CreateActCtxW(&ctx);
|
hCtx = CreateActCtxW(&ctx);
|
||||||
if (hCtx != INVALID_HANDLE_VALUE)
|
if (hCtx != INVALID_HANDLE_VALUE)
|
||||||
activated = ActivateActCtx(hCtx, &cookie);
|
ActivateActCtx(hCtx, &cookie);
|
||||||
else
|
else
|
||||||
WINE_TRACE("No manifest at ID 123 in %s\n", wine_dbgstr_w(path));
|
WINE_TRACE("No manifest at ID 123 in %s\n", wine_dbgstr_w(path));
|
||||||
}
|
}
|
||||||
|
@ -330,7 +326,7 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE hOldInstance, LPWSTR szCmdLine
|
||||||
{
|
{
|
||||||
/* Windows has a MessageBox here... */
|
/* Windows has a MessageBox here... */
|
||||||
WINE_ERR("Unable to load %s\n",wine_dbgstr_w(szDllName));
|
WINE_ERR("Unable to load %s\n",wine_dbgstr_w(szDllName));
|
||||||
goto CLEANUP;
|
return 0;
|
||||||
}
|
}
|
||||||
win16 = TRUE;
|
win16 = TRUE;
|
||||||
entry_point = get_entry_point16( dll, szEntryPoint );
|
entry_point = get_entry_point16( dll, szEntryPoint );
|
||||||
|
@ -342,7 +338,7 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE hOldInstance, LPWSTR szCmdLine
|
||||||
/* Windows has a MessageBox here... */
|
/* Windows has a MessageBox here... */
|
||||||
WINE_ERR( "Unable to find the entry point %s in %s\n",
|
WINE_ERR( "Unable to find the entry point %s in %s\n",
|
||||||
wine_dbgstr_w(szEntryPoint), wine_dbgstr_w(szDllName) );
|
wine_dbgstr_w(szEntryPoint), wine_dbgstr_w(szDllName) );
|
||||||
goto CLEANUP;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
GetStartupInfoW( &info );
|
GetStartupInfoW( &info );
|
||||||
|
@ -361,7 +357,7 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE hOldInstance, LPWSTR szCmdLine
|
||||||
char *cmdline = HeapAlloc( GetProcessHeap(), 0, len );
|
char *cmdline = HeapAlloc( GetProcessHeap(), 0, len );
|
||||||
|
|
||||||
if (!cmdline)
|
if (!cmdline)
|
||||||
goto CLEANUP;
|
return 0;
|
||||||
|
|
||||||
WideCharToMultiByte( CP_ACP, 0, szCmdLine, -1, cmdline, len, NULL, NULL );
|
WideCharToMultiByte( CP_ACP, 0, szCmdLine, -1, cmdline, len, NULL, NULL );
|
||||||
|
|
||||||
|
@ -376,18 +372,7 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE hOldInstance, LPWSTR szCmdLine
|
||||||
pRunDLL_CallEntry16( entry_point, hWnd, instance, cmdline, info.wShowWindow );
|
pRunDLL_CallEntry16( entry_point, hWnd, instance, cmdline, info.wShowWindow );
|
||||||
}
|
}
|
||||||
else call_entry_point( entry_point, hWnd, instance, cmdline, info.wShowWindow );
|
else call_entry_point( entry_point, hWnd, instance, cmdline, info.wShowWindow );
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, cmdline );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CLEANUP:
|
|
||||||
if (hWnd)
|
|
||||||
DestroyWindow(hWnd);
|
|
||||||
if (hDll)
|
|
||||||
FreeLibrary(hDll);
|
|
||||||
if (activated)
|
|
||||||
DeactivateActCtx(0, cookie);
|
|
||||||
ReleaseActCtx(hCtx);
|
|
||||||
HeapFree(GetProcessHeap(),0,szDllName);
|
|
||||||
return 0; /* rundll32 always returns 0! */
|
return 0; /* rundll32 always returns 0! */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue