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


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