次の方法で共有


WdfRequestCompleteWithPriorityBoost 関数 (wdfrequest.h)

[KMDF にのみ適用]

WdfRequestCompleteWithPriorityBoost メソッドは、指定された I/O 要求を完了し、完了状態を提供します。 また、システムが I/O 操作を要求したスレッドの実行時優先度を高めるために使用できる値も指定します。

構文

void WdfRequestCompleteWithPriorityBoost(
  [in] WDFREQUEST Request,
  [in] NTSTATUS   Status,
  [in] CCHAR      PriorityBoost
);

パラメーター

[in] Request

完了している I/O 要求を表すフレームワーク要求オブジェクトへのハンドル。

[in] Status

要求の完了状態を表す NTSTATUS 値 。 有効な状態値には、次のものが含まれますが、これらに限定されません。

STATUS_SUCCESS

ドライバーが要求を正常に完了しました。

STATUS_CANCELLED

ドライバーが要求を取り消しました。

STATUS_UNSUCCESSFUL

要求の処理中にドライバーでエラーが発生しました。

[in] PriorityBoost

操作を要求した元のスレッドの実行時優先度をインクリメントするシステム定義の定数値。 定数値はデバイスの種類に固有であり、 Wdm.h で定義されます。 定数名の形式は XXX_INCREMENT です。 優先度ブースト値の詳細については、「 I/O 要求の完了時の優先度ブーストの指定」を参照してください。

戻り値

なし

解説

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

フレームワークが提供する既定の優先度ブーストをオーバーライドする場合は、ドライバーで WdfRequestCompleteWithPriorityBoost を呼び出す必要があります。 たとえば、ドライバーは、エラーが検出された可能性があるため、要求をすばやく完了できた場合に、優先度の昇格をIO_NO_INCREMENTに設定できます。

WdfRequestCompleteWithPriorityBoost の呼び出しが返された後、ドライバーが WdfObjectReference を呼び出して 1 つ以上の参照カウントを要求オブジェクトに追加しない限り、要求ハンドルは無効になります。 WdfRequestCompleteWithPriorityBoost が返された後、ドライバーは WdfObjectReference を呼び出した場合でも、関連付けられている WDM IRP 構造体へのアクセスを試みることはできません。

WdfRequestCompleteWithPriorityBoost の呼び出しの詳細については、「I/O 要求の完了」を参照してください。

次のコード例は、 WdfRequestComplete の例で WdfRequestComplete ではなく WdfRequestCompleteWithPriorityBoost を使用する方法 示しています。

switch (params.Type) {
    case WdfRequestTypeRead:
        length = params.Parameters.Read.Length;
        direction = WdfDmaDirectionReadFromDevice;
        break;
    case WdfRequestTypeWrite:
        length = params.Parameters.Write.Length;
        direction = WdfDmaDirectionWriteToDevice;
        break;
    default:
        WdfRequestCompleteWithPriorityBoost(
                                            Request,
                                            STATUS_INVALID_PARAMETER,
                                            IO_NO_INCREMENT
                                            );
        return;
    }

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
Header wdfrequest.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf)BufAfterReqCompletedRead(kmdf)BufAfterReqCompletedReadA(kmdf)BufAfterReqCompletedWrite(kmdf)BufAfterReqCompletedWriteA(kmdf)CompleteCanceledReq(kmdf)DeferredRequestCompleted(kmdf)DoubleCompletion(kmdf)DoubleCompletionLocal(kmdf), DriverCreate(kmdf), EvtIoStopCancel(kmdf), EvtIoStopCompleteOrStopAck(kmdf), EvtSurpriseRemoveNoRequestComplete(kmdf), InvalidReqAccess(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MarkCancOnCancReqLocal(kmdf), MdlAfterReqCompletedIntIoctl(kmdf), MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctl(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedRead(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWrite(kmdf), MdlAfterReqCompletedWriteA(kmdf), MemAfterReqCompletedIntIoctl(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctl(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedRead(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWrite(kmdf), MemAfterReqCompletedWriteA(kmdf)NoCancelFromEvtSurpriseRemove(kmdf)ReqDelete(kmdf)ReqIsCancOnCancReq(kmdf)ReqNotCanceledLocal(kmdf)ReqSendFail(kmdf)RequestCompleted(kmdf)RequestCompletedLocal(kmdf)

こちらもご覧ください

WdfObjectReference

WdfRequestComplete

WdfRequestCompleteWithInformation