Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
L'applicazione di installazione del dispositivo deve determinare se sono in corso altre attività di installazione del dispositivo prima di eseguire le installazioni. Per determinare questa determinazione, l'applicazione di installazione del dispositivo deve chiamare CMP_WaitNoPendingInstallEvents, in genere con un valore di timeout zero. Se il valore restituito da questa funzione indica che ci sono altre attività di installazione in sospeso (ad esempio, la Creazione guidata del nuovo hardware potrebbe essere attiva), l'applicazione di installazione del dispositivo deve terminare.
Per rendere l'applicazione di installazione del dispositivo compatibile con le piattaforme che non supportano CMP_WaitNoPendingInstallEvents, l'applicazione deve includere il codice seguente:
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;
}
.
.
}
L'uso di questo codice si basa sul presupposto che se una piattaforma non supporta CMP_WaitNoPendingInstallEvents, la piattaforma non avvia l'esecuzione automatica se sono in corso attività di installazione.
Per un esempio di utilizzo di questo codice, vedere il pacchetto di installazione del tostapane nella sottodirectory src\general\tostapane di Windows Driver Kit (WDK).