Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ihre Geräteinstallationsanwendung sollte ermitteln, ob andere Geräteinstallationsaktivitäten ausgeführt werden, bevor sie ihre Installationen ausführen. Um dies festzustellen, sollte die Geräteinstallationsanwendung CMP_WaitNoPendingInstallEvents aufrufen, in der Regel mit einem Nulltimeoutwert. Wenn der Rückgabewert dieser Funktion angibt, dass andere Installationsaktivitäten ausstehen (z. B. der Assistent für gefundene neue Hardware ist möglicherweise aktiv), sollte die Geräteinstallationsanwendung beendet werden.
Damit Ihre Geräteinstallationsanwendung mit Plattformen kompatibel ist, die CMP_WaitNoPendingInstallEvents nicht unterstützen, sollte die Anwendung den folgenden Code enthalten:
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;
}
.
.
}
Die Verwendung dieses Codes basiert auf der Annahme, dass eine Plattform AutoRun nicht startet, wenn sie CMP_WaitNoPendingInstallEvents nicht unterstützt und Installationsaktivitäten ausgeführt werden.
Eine Beispielverwendung dieses Codes finden Sie im Toasterinstallationspaket unter dem Unterverzeichnis src\general\toaster des Windows-Treiberkit (WDK, Windows Driver Kit).