次の方法で共有


KsRemoveIrpFromCancelableQueue 関数 (ks.h)

KsRemoveIrpFromCancelableQueue 関数は、取り消すことができる指定されたキューから次の非インスタンス化された IRP をポップし、その取り消し状態を削除します。 関数は、キャンセル ルーチンを持つ IRP が見つかるまで、またはリストの末尾に達するまで、リストを検索します。 関数は、ほとんどの場合、提供されたスピン ロックを使用してアクセスを同期することで、キャンセル スピン ロックの使用を最小限に抑えます。 関数は、IRQ レベル DISPATCH_LEVEL以下で呼び出される場合があります。

構文

KSDDKAPI PIRP KsRemoveIrpFromCancelableQueue(
  [in, out] PLIST_ENTRY             QueueHead,
  [in]      PKSPIN_LOCK             SpinLock,
  [in]      KSLIST_ENTRY_LOCATION   ListLocation,
  [in]      KSIRP_REMOVAL_OPERATION RemovalOperation
);

パラメーター

[in, out] QueueHead

IRP を削除するキューの先頭を指します。

[in] SpinLock

キュー アクセスのドライバーのスピン ロックをポイントします。

[in] ListLocation

この IRP は、キューの先頭または末尾から取得する必要があるかどうかを示します。

[in] RemovalOperation

キャンセル関数を NULL に設定して、IRP を一覧から削除するか、単に取得するかを指定 します。 取得しただけの場合は、後で KsReleaseIrpOnCancelableQueue を使用して IRP を解放するか、 KsRemoveSpecificIrpFromCancelableQueue を使用して完全に削除する必要があります。

戻り値

KsRemoveIrpFromCancelableQueue 関数は、一覧の次の非インスタンス化された IRP を返します。または、何も見つからない場合、またはまだ取得されていない IRP が見つからない場合は NULL を返します。

注釈

これらの列挙体は、IRP が削除される場所とその方法を制御するために、前のパラメーターで使用されます。

typedef enum {
    KsListEntryTail,
    KsListEntryHead
} KSLIST_ENTRY_LOCATION;

typedef enum {
    KsAcquireOnly,
    KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;

要件

要件
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)
Library Ks.lib

こちらもご覧ください

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue