Функция 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 |