Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacja do instalacji urządzenia powinna określić, czy inne działania instalacji urządzeń są w toku przed wykonaniem instalacji. Aby to ustalić, aplikacja instalacji urządzenia powinna wywoływać CMP_WaitNoPendingInstallEvents, zazwyczaj z zerową wartością limitu czasu. Jeśli wartość zwracana z tej funkcji wskazuje, że oczekują inne działania instalacyjne (na przykład Kreator odnalezionego nowego sprzętu może być aktywny), aplikacja instalacyjna urządzenia powinna się zamknąć.
Aby aplikacja instalacji urządzenia jest zgodna z platformami, które nie obsługują CMP_WaitNoPendingInstallEvents, aplikacja powinna zawierać następujący kod:
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;
}
.
.
}
Użycie tego kodu jest oparte na założeniu, że jeśli platforma nie obsługuje CMP_WaitNoPendingInstallEvents, platforma nie uruchamia automatycznego uruchamiania, jeśli działania instalacji są w toku.
Aby zapoznać się z przykładowym użyciem tego kodu, zobacz pakiet instalacyjny tostera w podkatalogu src\general\toster zestawu sterowników systemu Windows (WDK).