Функция UrsSetHardwareEventSupport (ursdevice.h)

Указывает, что драйвер клиента поддерживает отчеты о новых событиях оборудования.

Синтаксис

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

Параметры

[in] Device

Дескриптор объекта устройства платформы, полученный драйвером клиента при предыдущем вызове WdfDeviceCreate.

[in] HardwareEventReportingSupported

Логическое значение, указывающее на поддержку отчетов о событиях оборудования.

Значение TRUE указывает, что драйвер клиента будет сообщать о событиях оборудования путем вызова UrsReportHardwareEvent.

False указывает, что отчеты о событиях оборудования не обрабатываются клиентским драйвером.

Возвращаемое значение

None

Remarks

Прежде чем драйвер клиента сможет сообщать о событиях оборудования, драйвер клиента для контроллера с двумя ролями должен указать расширению класса, что драйвер поддерживает аппаратные события, вызвав этот метод. Как правило, драйвер вызывает UrsSetHardwareEventSupport в функции обратного вызова EvtDevicePrepareHardware драйвера. Драйвер не должен вызывать этот метод после возврата EvtDevicePrepareHardware . В противном случае метод завершается сбоем, и если средство проверки драйверов включено, будет выдано прерывание .

Для некоторых контроллеров драйвер клиента может не поддерживать обнаружение ролей перед выполнением операции переключения ролей. В этом случае драйвер клиента должен установить для параметра HardwareEventReportingSupported значение FALSE. Операционная система управляет ролью контроллера.

В противном случае, если драйвер поддерживает обнаружение ролей, он должен задать для hardwareEventReportingSupported значение TRUE. Это указывает расширению класса, что драйвер клиента будет обрабатывать события оборудования, такие как прерывания закрепления идентификатора, и сообщит расширению класса, что роль необходимо изменить. Драйвер может сообщать о событиях, вызывая UrsReportHardwareEvent.

Примеры


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

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Целевая платформа Windows
Минимальная версия KMDF 1.15
Верхняя часть ursdevice.h (включая Urscx.h)
Библиотека Urscxstub.lib
IRQL PASSIVE_LEVEL

См. также раздел

UrsReportHardwareEvent