Freigeben über


UrsSetHardwareEventSupport-Funktion (ursdevice.h)

Gibt die Unterstützung des Clienttreibers für das Melden neuer Hardwareereignisse an.

Syntax

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

Parameter

[in] Device

Ein Handle für das Framework-Geräteobjekt, das der Clienttreiber im vorherigen Aufruf von WdfDeviceCreateabgerufen hat.

[in] HardwareEventReportingSupported

Ein boolescher Wert, der die Unterstützung für das Melden von Hardwareereignissen angibt.

TRUE gibt an, dass der Clienttreiber Hardwareereignisse meldet, indem UrsReportHardwareEventaufgerufen wird.

FALSE gibt an, dass die Hardwareereignisberichterstattung nicht vom Clienttreiber behandelt wird.

Rückgabewert

Nichts

Bemerkungen

Bevor der Clienttreiber Hardwareereignisse melden kann, muss der Clienttreiber für den Dual-Role-Controller die Klassenerweiterung angeben, die der Treiber Hardwareereignisse unterstützt, indem diese Methode aufgerufen wird. In der Regel ruft der Treiber UrsSetHardwareEventSupport- in der EvtDevicePrepareHardware Rückruffunktion des Treibers auf. Der Treiber darf diese Methode nicht aufrufen, nachdem EvtDevicePrepareHardware zurückgegeben wurde. Andernfalls schlägt die Methode fehl, und eine Unterbrechung wird ausgegeben, wenn Driver Verifier aktiviert ist.

Bei bestimmten Controllern unterstützt der Clienttreiber die Rollenerkennung möglicherweise nicht, bevor ein Rollenwechselvorgang ausgeführt wird. In diesem Fall muss der Clienttreiber HardwareEventReportingSupported- auf FALSE festlegen. Das Betriebssystem verwaltet die Rolle des Controllers.

Andernfalls muss der Treiber, wenn der Treiber die Rollenerkennung unterstützt, HardwareEventReportingSupported- auf TRUE festlegen. Dies gibt an, dass die Klassenerweiterung, die der Clienttreiber Hardwareereignisse verarbeitet, z. B. ID-Pin-Unterbrechungen, und die Klassenerweiterung melden, die die Rolle ändern muss. Der Treiber kann Ereignisse melden, indem UrsReportHardwareEventaufgerufen wird.

Beispiele


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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10
mindestens unterstützte Server- Windows Server 2016
Zielplattform- Fenster
Minimale KMDF-Version 1.15
Header- ursdevice.h (include Urscx.h)
Library Urscxstub.lib
IRQL- PASSIVE_LEVEL

Siehe auch

UrsReportHardwareEvent-