Función WdfDeviceInitSetReleaseHardwareOrderOnFailure (wdfdevice.h)
[Se aplica a KMDF y UMDF]
El método WdfDeviceInitSetReleaseHardwareOrderOnFailure especifica si el marco llama a la función de devolución de llamada EvtDeviceReleaseHardware del controlador inmediatamente después del error del dispositivo o espera hasta que se hayan quitado todos los dispositivos secundarios.
Sintaxis
void WdfDeviceInitSetReleaseHardwareOrderOnFailure(
[in] PWDFDEVICE_INIT DeviceInit,
[in] WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE ReleaseHardwareOrderOnFailure
);
Parámetros
[in] DeviceInit
Puntero a una estructura de WDFDEVICE_INIT .
[in] ReleaseHardwareOrderOnFailure
Enumerador con tipo WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE que especifica cuándo el marco llama a la función de devolución de llamada EvtDeviceReleaseHardware del controlador.
Valor devuelto
None
Observaciones
Normalmente, el marco llama a la función de devolución de llamada EvtDeviceReleaseHardware de un controlador después de llamar a la función EvtDeviceReleaseHardware para todos los dispositivos secundarios que el controlador enumera.
Sin embargo, en caso de un error de encendido o apagado del dispositivo, el marco podría llamar al EvtDeviceReleaseHardware del controlador antes de llamar a las funciones EvtDeviceReleaseHardware para todos los dispositivos secundarios.
Para invalidar este comportamiento predeterminado, un controlador puede llamar a WdfDeviceInitSetReleaseHardwareOrderOnFailure para especificar que, incluso en escenarios de error del dispositivo, el marco siempre debe esperar a llamar a su función EvtDeviceReleaseHardware hasta que haya llamado a las funciones EvtDeviceReleaseHardware de los dispositivos secundarios.
Por ejemplo, un controlador de bus que realiza el acceso de hardware en nombre de sus dispositivos secundarios podría usar esta técnica para asegurarse de que sus dispositivos secundarios no solicitan acceso al hardware después de que el marco haya llamado a la función de devolución de llamada EvtDeviceReleaseHardware del controlador de bus.
Si un controlador llama a WdfDeviceInitSetReleaseHardwareOrderOnFailure, debe hacerlo antes de llamar a WdfDeviceCreate. Para obtener más información sobre cómo llamar a WdfDeviceCreate, vea Creating a Framework Device Object.
Ejemplos
En el ejemplo de código siguiente se muestra cómo un controlador de bus puede solicitar que el marco espere a llamar a su función de devolución de llamada EvtDeviceReleaseHardware hasta que se hayan quitado todos sus dispositivos secundarios.
WdfDeviceInitSetReleaseHardwareOrderOnFailure(
DeviceInit,
WdfReleaseHardwareOrderOnFailureAfterDescendants
);
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.11 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfdevice.h (incluir Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf) |