次の方法で共有


WdfRequestAllocateTimer 関数 (wdfrequest.h)

[KMDF と UMDF に適用]

WdfRequestAllocateTimer メソッドは、指定された I/O 要求にタイマーを割り当てます。

構文

NTSTATUS WdfRequestAllocateTimer(
  [in] WDFREQUEST Request
);

パラメーター

[in] Request

フレームワーク要求オブジェクトへのハンドル。

戻り値

WdfRequestAllocateTimer 操作が成功した場合、STATUS_SUCCESSを返。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。

リターン コード 形容
STATUS_INVALID_PARAMETER
入力パラメーターが無効です。
STATUS_INSUFFICIENT_RESOURCES
タイマーを割り当てませんでした。
 

このメソッドは、他のNTSTATUS 値を返す場合もあります。

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

備考

ドライバーが WdfRequestSend 呼び出すときにタイムアウト値を指定する場合は、WdfRequestSend 呼び出す前に、WdfRequestAllocateTimer を呼び出す必要があります。 これにより、WdfRequestSend への呼び出しは、タイマーを割り当てるのに十分なシステム リソースがない場合に失敗しません。

指定した要求に対してタイマーが既に割り当てられている場合、WdfRequestAllocateTimer はSTATUS_SUCCESSを返します。

次のコード例では、WDF_REQUEST_SEND_OPTIONS 構造体を初期化し、I/O 要求にタイマー オブジェクトを割り当ててから、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