Función UrsSetHardwareEventSupport (ursdevice.h)
Indica la compatibilidad del controlador cliente para notificar nuevos eventos de hardware.
Sintaxis
void UrsSetHardwareEventSupport(
[in] WDFDEVICE Device,
[in] BOOLEAN HardwareEventReportingSupported
);
Parámetros
[in] Device
Identificador del objeto de dispositivo de marco que el controlador cliente recuperó en la llamada anterior a WdfDeviceCreate.
[in] HardwareEventReportingSupported
Valor booleano que indica la compatibilidad con la generación de informes de eventos de hardware.
TRUE indica que el controlador cliente notificará eventos de hardware llamando a UrsReportHardwareEvent.
FALSE indica que el controlador cliente no controla los informes de eventos de hardware.
Valor devuelto
Ninguno
Observaciones
Para que el controlador cliente pueda notificar eventos de hardware, el controlador cliente para el controlador de doble rol debe indicar a la extensión de clase que el controlador admite eventos de hardware llamando a este método. Normalmente, el controlador llama a ursSetHardwareEventSupport en el evtDevicePrepareHardware del controlador función de devolución de llamada. El controlador no debe llamar a este método después de que se haya devuelto EvtDevicePrepareHardware. De lo contrario, se produce un error en el método y se emite una interrupción si se habilita comprobador de controladores.
Para determinados controladores, es posible que el controlador cliente no admita la detección de roles antes de realizar una operación de conmutador de rol. En ese caso, el controlador cliente debe establecer HardwareEventReportingSupported en FALSE. El sistema operativo administra el rol del controlador.
De lo contrario, si el controlador admite la detección de roles, debe establecer HardwareEventReportingSupported en TRUE. Esto indica a la extensión de clase que el controlador cliente controlará eventos de hardware, como interrupciones de patillas de identificador y notificar a la extensión de clase que debe cambiarse el rol. El controlador puede notificar eventos llamando a UrsReportHardwareEvent.
Ejemplos
EVT_WDF_DEVICE_PREPARE_HARDWARE EvtDevicePrepareHardware;
NTSTATUS
EvtDevicePrepareHardware (
_In_ WDFDEVICE Device,
_In_ WDFCMRESLIST ResourcesRaw,
_In_ WDFCMRESLIST ResourcesTranslated
)
{
ULONG resourceCount;
BOOLEAN hasHardwareEventSupport;
UNREFERENCED_PARAMETER(ResourcesRaw);
TRY {
resourceCount = WdfCmResourceListGetCount(ResourcesTranslated);
...
// DetermineHardwareEventSupport determines support by inspecting resources.
// Implementation not shown.
hasHardwareEventSupport = DetermineHardwareEventSupport(ResourcesRaw);
UrsSetHardwareEventSupport(Device, hasHardwareEventSupport);
if (hasHardwareEventSupport) {
UrsReportHardwareEvent(Device, UrsHardwareEventIdGround);
}
...
} FINALLY {
}
return STATUS_SUCCESS;
}
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 10 |
servidor mínimo admitido | Windows Server 2016 |
de la plataforma de destino de | Windows |
versión mínima de KMDF | 1.15 |
encabezado de | ursdevice.h (incluya Urscx.h) |
biblioteca de | Urscxstub.lib |
irQL | PASSIVE_LEVEL |