Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La aplicación de instalación de dispositivos debe determinar si otras actividades de instalación de dispositivos están en curso antes de realizar sus instalaciones. Para realizar esta determinación, la aplicación de instalación de dispositivos debe llamar a CMP_WaitNoPendingInstallEvents, normalmente con un valor de tiempo de espera cero. Si el valor devuelto de esta función indica que hay otras actividades de instalación pendientes (por ejemplo, el Asistente para agregar nuevo hardware podría estar activo), la aplicación de instalación del dispositivo debe salir.
Para que su aplicación de instalación de dispositivos sea compatible con las plataformas que no admiten CMP_WaitNoPendingInstallEvents, la aplicación debe incluir el siguiente código:
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;
}
.
.
}
El uso de este código se basa en la premisa de que, si una plataforma no admite CMP_WaitNoPendingInstallEvents, la plataforma no inicia AutoRun si las actividades de instalación están en curso.
Para ver un ejemplo de uso de este código, consulte el paquete de instalación de la tostadora en el subdirectorio src\general\toaster del Kit para controladores de Windows (WDK).