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 |