Share via


Fonction UrsSetHardwareEventSupport (ursdevice.h)

Indique la prise en charge du pilote client pour la création de rapports de nouveaux événements matériels.

Syntaxe

void UrsSetHardwareEventSupport(
  [in] WDFDEVICE Device,
  [in] BOOLEAN   HardwareEventReportingSupported
);

Paramètres

[in] Device

Handle de l’objet d’appareil framework que le pilote client a récupéré lors de l’appel précédent à WdfDeviceCreate.

[in] HardwareEventReportingSupported

Valeur booléenne qui indique la prise en charge de la création de rapports d’événements matériels.

TRUE indique que le pilote client signale les événements matériels en appelant UrsReportHardwareEvent.

FALSE indique que la création de rapports d’événements matériels n’est pas gérée par le pilote client.

Valeur de retour

None

Remarques

Avant que le pilote client puisse signaler des événements matériels, le pilote client du contrôleur à double rôle doit indiquer à l’extension de classe que le pilote prend en charge les événements matériels en appelant cette méthode. En règle générale, le pilote appelle UrsSetHardwareEventSupport dans la fonction de rappel EvtDevicePrepareHardware du pilote. Le pilote ne doit pas appeler cette méthode après le retour d’EvtDevicePrepareHardware . Sinon, la méthode échoue et un arrêt est émis si Driver Verifier est activé.

Pour certains contrôleurs, le pilote client peut ne pas prendre en charge la détection de rôle avant d’effectuer une opération de commutateur de rôle. Dans ce cas, le pilote client doit définir HardwareEventReportingSupported sur FALSE. Le système d’exploitation gère le rôle du contrôleur.

Sinon, si le pilote prend en charge la détection de rôle, il doit définir HardwareEventReportingSupported sur TRUE. Cela indique à l’extension de classe que le pilote client gérera les événements matériels, tels que les interruptions de broche d’ID, et signalera à l’extension de classe que le rôle doit être modifié. Le pilote peut signaler des événements en appelant UrsReportHardwareEvent.

Exemples


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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
Serveur minimal pris en charge Windows Server 2016
Plateforme cible Windows
Version KMDF minimale 1.15
En-tête ursdevice.h (inclure Urscx.h)
Bibliothèque Urscxstub.lib
IRQL PASSIVE_LEVEL

Voir aussi

UrsReportHardwareEvent