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 |