Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложение установки устройства должно определить, выполняются ли другие действия по установке устройства перед выполнением его установки. Чтобы сделать это определение, приложение установки устройства должно вызывать CMP_WaitNoPendingInstallEvents, как правило, с нулевым значением времени ожидания. Если возвращаемое значение из этой функции указывает, что другие действия установки ожидаются (например, мастер обнаружения нового оборудования может быть активным), приложение установки устройства должно выйти.
Чтобы сделать приложение установки устройства совместимым с платформами, которые не поддерживают CMP_WaitNoPendingInstallEvents, приложение должно содержать следующий код:
BOOL
IsDeviceInstallInProgress (VOID)
{
HMODULE hModule;
CMP_WAITNOPENDINGINSTALLEVENTS_PROC pCMP_WaitNoPendingInstallEvents;
hModule = GetModuleHandle(TEXT("setupapi.dll"));
if(!hModule)
{
// Should never happen since we're linked to SetupAPI, but...
return FALSE;
}
pCMP_WaitNoPendingInstallEvents =
(CMP_WAITNOPENDINGINSTALLEVENTS_PROC)GetProcAddress(hModule,
"CMP_WaitNoPendingInstallEvents");
if(!pCMP_WaitNoPendingInstallEvents)
{
// We're running on a release of the operating system that doesn't supply this function.
// Trust the operating system to suppress AutoRun when appropriate.
return FALSE;
}
return (pCMP_WaitNoPendingInstallEvents(0) == WAIT_TIMEOUT);
}
int
__cdecl
_tmain(IN int argc, IN PTCHAR argv[])
{
if(IsDeviceInstallInProgress()) {
//
// We don't want to start right now. Instead, our
// device co-installer will invoke this application
// (if necessary) during finish-install processing.
//
return -1;
}
.
.
}
Использование этого кода основано на предпосылке, что если платформа не поддерживает CMP_WaitNoPendingInstallEvents, платформа не запускает AutoRun в процессе установки.
Пример использования этого кода см. в пакете установки тостера в подкаталоге src\general\тостер комплекта драйверов Windows (WDK).