Partager 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 des événements matériels de création de rapports.

TRUE indique que le pilote client signale des é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

Aucun

Remarques

Avant que le pilote client puisse signaler des événements matériels, le pilote client pour le 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 EvtDevicePrepareHardware a retourné. Sinon, la méthode échoue et un arrêt est émis si vérificateur de pilotes 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ère les événements matériels, tels que les interruptions de broche d’ID, et signale à 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;
}

Exigences

Exigence Valeur
client minimum pris en charge Windows 10
serveur minimum pris en charge Windows Server 2016
plateforme cible Windows
version minimale de KMDF 1.15
d’en-tête ursdevice.h (include Urscx.h)
bibliothèque Urscxstub.lib
IRQL PASSIVE_LEVEL

Voir aussi

UrsReportHardwareEvent