mirror of
https://github.com/reactos/reactos.git
synced 2024-12-26 00:54:40 +00:00
Send SW_HIDE instead of SW_SHOWNOACTIVATE to newdev.dll when 2nd stage setup is running
svn path=/trunk/; revision=19114
This commit is contained in:
parent
b8b9eec630
commit
50b07becb6
1 changed files with 33 additions and 3 deletions
|
@ -878,7 +878,7 @@ PNP_RequestEjectPC(handle_t BindingHandle)
|
|||
typedef BOOL (WINAPI *PDEV_INSTALL_W)(HWND, HINSTANCE, LPCWSTR, INT);
|
||||
|
||||
static BOOL
|
||||
InstallDevice(PCWSTR DeviceInstance)
|
||||
InstallDevice(PCWSTR DeviceInstance, BOOL SetupIsActive)
|
||||
{
|
||||
PLUGPLAY_CONTROL_STATUS_DATA PlugPlayData;
|
||||
HMODULE hNewDev = NULL;
|
||||
|
@ -909,7 +909,7 @@ InstallDevice(PCWSTR DeviceInstance)
|
|||
DevInstallW = (PDEV_INSTALL_W)GetProcAddress(hNewDev, (LPCSTR)"DevInstallW");
|
||||
if (!DevInstallW)
|
||||
goto cleanup;
|
||||
if (!DevInstallW(NULL, NULL, DeviceInstance, SW_SHOWNOACTIVATE))
|
||||
if (!DevInstallW(NULL, NULL, DeviceInstance, SetupIsActive ? SW_HIDE : SW_SHOWNOACTIVATE))
|
||||
goto cleanup;
|
||||
|
||||
DeviceInstalled = TRUE;
|
||||
|
@ -921,6 +921,33 @@ cleanup:
|
|||
return DeviceInstalled;
|
||||
}
|
||||
|
||||
static BOOL
|
||||
SetupIsActive(VOID)
|
||||
{
|
||||
HKEY hKey = INVALID_HANDLE_VALUE;
|
||||
DWORD regType, active, size;
|
||||
LONG rc;
|
||||
BOOL ret = FALSE;
|
||||
|
||||
rc = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SYSTEM\\Setup", 0, KEY_QUERY_VALUE, &hKey);
|
||||
if (rc != ERROR_SUCCESS)
|
||||
goto cleanup;
|
||||
|
||||
rc = RegQueryValueExW(hKey, L"SystemSetupInProgress", NULL, ®Type, (LPBYTE)&active, &size);
|
||||
if (rc != ERROR_SUCCESS)
|
||||
goto cleanup;
|
||||
if (regType != REG_DWORD)
|
||||
goto cleanup;
|
||||
|
||||
ret = (active != 0);
|
||||
|
||||
cleanup:
|
||||
if (hKey != INVALID_HANDLE_VALUE)
|
||||
RegCloseKey(hKey);
|
||||
DPRINT("System setup in progress? %S\n", ret ? L"YES" : L"NO");
|
||||
return ret;
|
||||
}
|
||||
|
||||
static DWORD WINAPI
|
||||
PnpEventThread(LPVOID lpParameter)
|
||||
{
|
||||
|
@ -928,12 +955,15 @@ PnpEventThread(LPVOID lpParameter)
|
|||
ULONG PnpEventSize;
|
||||
NTSTATUS Status;
|
||||
RPC_STATUS RpcStatus;
|
||||
BOOL setupActive;
|
||||
|
||||
PnpEventSize = 0x1000;
|
||||
PnpEvent = HeapAlloc(GetProcessHeap(), 0, PnpEventSize);
|
||||
if (PnpEvent == NULL)
|
||||
return ERROR_OUTOFMEMORY;
|
||||
|
||||
setupActive = SetupIsActive();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
DPRINT("Calling NtGetPlugPlayEvent()\n");
|
||||
|
@ -961,7 +991,7 @@ PnpEventThread(LPVOID lpParameter)
|
|||
if (UuidEqual(&PnpEvent->EventGuid, (UUID*)&GUID_DEVICE_ARRIVAL, &RpcStatus))
|
||||
{
|
||||
DPRINT("Device arrival event: %S\n", PnpEvent->TargetDevice.DeviceIds);
|
||||
InstallDevice(PnpEvent->TargetDevice.DeviceIds);
|
||||
InstallDevice(PnpEvent->TargetDevice.DeviceIds, setupActive);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue