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 |