Поделиться через


Функция WdfRequestAllocateTimer (wdfrequest.h)

[Относится к KMDF и UMDF]

Метод WdfRequestAllocateTimer выделяет таймер для указанного запроса ввода-вывода.

Синтаксис

NTSTATUS WdfRequestAllocateTimer(
  [in] WDFREQUEST Request
);

Параметры

[in] Request

Дескриптор объекта запроса платформы.

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

WdfRequestAllocateTimer возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может вернуть одно из следующих значений:

Код возврата Описание
STATUS_INVALID_PARAMETER
Входной параметр недопустим.
STATUS_INSUFFICIENT_RESOURCES
Не удалось выделить таймер.
 

Этот метод также может возвращать другие значения NTSTATUS.

Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Комментарии

Если драйвер задает значение времени ожидания при вызове WdfRequestSend, он должен вызвать WdfRequestAllocateTimer перед вызовомWdfRequestSend. Это гарантирует, что вызов WdfRequestSend не завершится ошибкой, если недостаточно системных ресурсов для выделения таймера.

Если для указанного запроса уже выделен таймер, WdfRequestAllocateTimer возвращает STATUS_SUCCESS.

Примеры

В следующем примере кода инициализируется структура WDF_REQUEST_SEND_OPTIONS , выделяется объект таймера для запроса ввода-вывода, а затем вызывается WdfRequestSend.

NTSTATUS  status;
WDF_REQUEST_SEND_OPTIONS  options;
BOOLEAN  requestSend;

WDF_REQUEST_SEND_OPTIONS_INIT(
                              &options,
                              WDF_REQUEST_SEND_OPTION_TIMEOUT
                              );

WDF_REQUEST_SEND_OPTIONS_SET_TIMEOUT(
                                     &options,
                                     WDF_ABS_TIMEOUT_IN_SEC(TIME_OUT_VALUE)
                                     );
status = WdfRequestAllocateTimer(
                                 request
                                 );
if (!NT_SUCCESS(status)){
    return status;
...
    requestSend = WdfRequestSend(
                                 request,
                                 ioTarget,
                                 &options
                                 );
}

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfrequest.h (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

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

WDF_ABS_TIMEOUT_IN_SEC

WDF_REQUEST_SEND_OPTIONS_INIT

WdfRequestSend