KsMoveIrpsOnCancelableQueue 関数 (ks.h)
KsMoveIrpsOnCancelableQueue 関数は、ミニドライバー定義の KStrIrpListCallback 関数から返される値に応じて、指定された IRP を SourceList パラメーターから DestinationList パラメーターに移動します。
構文
KSDDKAPI NTSTATUS KsMoveIrpsOnCancelableQueue(
[in, out] PLIST_ENTRY SourceList,
[in] PKSPIN_LOCK SourceLock,
[in, out] PLIST_ENTRY DestinationList,
[in, optional] PKSPIN_LOCK DestinationLock,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in] PFNKSIRPLISTCALLBACK ListCallback,
[in] PVOID Context
);
パラメーター
[in, out] SourceList
IRP を削除するキューの先頭を指定します。
[in] SourceLock
ソース キュー アクセス用のドライバーのスピン ロックへのポインター。
[in, out] DestinationList
IRP を追加するキューの先頭を指定します。
[in, optional] DestinationLock
必要に応じて、宛先キュー へのアクセスに対するドライバーのスピン ロックへのポインターが含まれます。 これが指定されていない場合、 SourceLock パラメーターは両方のキューを制御するものと見なされます。 指定した場合、このロックは 常に SourceLock パラメーターの後に取得されます。 宛先リストに個別のスピン ロックがある場合は、IRP を移動し、KSQUEUE_SPINLOCK_IRP_STORAGE() スピン ロックを更新できるようにするために、システム全体のスピン ロックの取り消しが最初に取得されます。
[in] ListLocation
IRP をソース キューの先頭または末尾から列挙する必要があるかどうかを示します。 移動されるすべての IRP は、順序が維持されるように、宛先キューの反対側の端に配置されます。
[in] ListCallback
特定の IRP を SourceList から DestinationList に移動するか、列挙を終了するかを示すために呼び出すミニドライバー定義の KStrIrpListCallback 関数を指定します。
[in] Context
ListCallback に渡されるコンテキスト。
戻り値
リストが完全に列挙された場合は、STATUS_SUCCESSを返します。それ以外の場合は、列挙を中断したミニドライバー定義 の KStrIrpListCallback コールバック関数によって返された警告またはエラーを返します。
注釈
現在取得されているかどうかに関係なく、 KStrIrpListCallback 関数が移動する必要があることを示している場合、IRP は移動されます。 KStrIrpListCallback がSTATUS_SUCCESSを返す場合、IRP は移動されます。 STATUS_NO_MATCHを返す場合、IRP は移動されません。 その他の戻り値の警告またはエラー値は列挙を終了し、 関数によって返されます。 STATUS_NO_MATCH値は 、KStrIrpListCallback によってエラーとして返されるべきではありません。 KStrIrpListCallback は、DISPATCH_LEVELで呼び出されます。 KStrIrpListCallback は常に、リスト列挙を完了するために NULL IRP 値を使用して、最後に少なくとも 1 回呼び出されます。
KsMoveIrpsOnCancelableQueue は、コールバック関数が検索を終了する必要があることを示すか、リストの末尾に達するまでリストを続行します。 KsMoveIrpsOnCancelableQueue は、可能な限り、提供されたスピン ロックを使用してアクセスを同期することで、システム全体の Cancel Spin Lock の使用を最小限に抑えます。 KsMoveIrpsOnCancelableQueue では、IRP の移動中にキャンセル ルーチンを変更することはできません。
関数は、DISPATCH_LEVEL以下で呼び出すことができます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ks.h (Ks.h を含む) |
Library | Ks.lib |