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

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

Синтаксис

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

Параметры

[in] Device

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

[in] HardwareEventReportingSupported

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

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

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

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

Никакой

Замечания

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

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

В противном случае, если драйвер поддерживает обнаружение ролей, он должен задать HardwareEventReportingSupportingSupported значение 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
целевая платформа Виндоус
минимальная версия KMDF 1.15
заголовка ursdevice.h (include Urscx.h)
библиотеки Urscxstub.lib
IRQL PASSIVE_LEVEL

См. также

UrsReportHardwareEvent