EVT_WDF_DEVICE_RELEASE_HARDWARE función de devolución de llamada (wdfdevice.h)
[Se aplica a KMDF y UMDF]
La función de devolución de llamada de eventos EvtDeviceReleaseHardware de un controlador realiza operaciones necesarias cuando ya no se puede acceder a un dispositivo.
Sintaxis
EVT_WDF_DEVICE_RELEASE_HARDWARE EvtWdfDeviceReleaseHardware;
NTSTATUS EvtWdfDeviceReleaseHardware(
[in] WDFDEVICE Device,
[in] WDFCMRESLIST ResourcesTranslated
)
{...}
Parámetros
[in] Device
Identificador de un objeto de dispositivo de marco.
[in] ResourcesTranslated
Identificador de un objeto de lista de recursos que identifica los recursos de hardware traducidos que el administrador de Plug and Play ha asignado al dispositivo.
Valor devuelto
Si la función de devolución de llamada EvtDeviceReleaseHardware no encuentra ningún error, debe devolver STATUS_SUCCESS u otro valor de estado para el que NT_SUCCESS(status) sea TRUE. De lo contrario, debe devolver un valor de estado para el que NT_SUCCESS(status) es igual a FALSE. No devuelva STATUS_NOT_SUPPORTED.
Comentarios
Para registrar una función de devolución de llamada EvtDeviceReleaseHardware , el controlador debe llamar a WdfDeviceInitSetPnpPowerEventCallbacks.
Si un controlador ha registrado una función de devolución de llamada EvtDeviceReleaseHardware , el marco lo llama durante las transiciones siguientes:
- Reequilibrio de recursos
- Eliminación ordenada
- Eliminación sorpresa
El marco llama a la función de devolución de llamada EvtDeviceReleaseHardware después de que el marco haya dejado de enviar solicitudes de E/S al dispositivo, las interrupciones asignadas al dispositivo se han deshabilitado y desconectado, y el dispositivo se ha desactivado.
Cuando el marco llama a EvtDeviceReleaseHardware, el PDO del dispositivo sigue existiendo y se puede consultar para obtener información del dispositivo que está disponible en el estado de apagado, por ejemplo, el estado de configuración pci.
Además, los recursos de hardware traducidos que el marco proporciona a EvtDeviceReleaseHardware todavía se asignan al dispositivo. El propósito principal de esta función de devolución de llamada es liberar esos recursos y, en particular, para desasignar los recursos de memoria asignados a la función de devolución de llamada EvtDevicePrepareHardware del controlador. El controlador también puede usar esta devolución de llamada para realizar cualquier otra actividad de administración de controladores o dispositivos que pueda ser necesaria en el estado de apagado. Normalmente, todas las demás operaciones de apagado de hardware deben realizarse en la función de devolución de llamada EvtDeviceD0Exit del controlador.
El marco siempre llama a la función de devolución de llamada EvtDeviceReleaseHardware del controlador si se ha llamado a la función de devolución de llamada EvtDevicePrepareHardware del controlador, incluso si EvtDevicePrepareHardware devolvió un código de error.
Un controlador para un dispositivo que tenga dispositivos secundarios puede controlar el orden en el que el marco llama a las funciones de devolución de llamada EvtDeviceReleaseHardware para el dispositivo primario y sus elementos secundarios llamando a WdfDeviceInitSetReleaseHardwareOrderOnFailure desde su función de devolución de llamada EvtDriverDeviceAdd .
Para obtener más información sobre cuándo el marco llama a esta función de devolución de llamada, consulte Escenarios de administración de energía y PnP.
Para obtener más información sobre los recursos de hardware, consulte Recursos de hardware para controladores de Framework-Based.
Para obtener más información sobre los controladores que proporcionan esta función de devolución de llamada, consulte Compatibilidad con PnP y administración de energía en controladores de función.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfdevice.h (incluya Wdf.h) |
IRQL | PASSIVE_LEVEL |