Función UrsSetHardwareEventSupport (ursdevice.h)

Indica la compatibilidad del controlador de cliente para informar de 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 de 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 mediante una llamada a UrsReportHardwareEvent.

FALSE indica que el controlador cliente no controla los informes de eventos de hardware.

Valor devuelto

None

Observaciones

Para que el controlador cliente pueda notificar eventos de hardware, el controlador de 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 la función de devolución de llamada EvtDevicePrepareHardware del controlador. El controlador no debe llamar a este método después de que EvtDevicePrepareHardware haya devuelto. De lo contrario, se produce un error en el método y se emite una interrupción si el Comprobador de controladores está habilitado.

Para determinados controladores, es posible que el controlador cliente no admita la detección de roles antes de realizar una operación de cambio 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, e informar 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 Value
Cliente mínimo compatible Windows 10
Servidor mínimo compatible Windows Server 2016
Plataforma de destino Windows
Versión mínima de KMDF 1.15
Encabezado ursdevice.h (incluya Urscx.h)
Library Urscxstub.lib
IRQL PASSIVE_LEVEL

Consulte también

UrsReportHardwareEvent