次の方法で共有


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

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

戻り値

KsRemoveIrpFromCancelableQueue 関数は、一覧の次の非アンマネージ IRP を返します。または、見つからない場合、またはまだ取得されていない IRP が見つからない場合は、NULL を返します。

備考

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

typedef enum {
    KsListEntryTail,
    KsListEntryHead
} KSLIST_ENTRY_LOCATION;

typedef enum {
    KsAcquireOnly,
    KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー ks.h (Ks.h を含む)
ライブラリ Ks.lib

関連項目

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue