KsMoveIrpsOnCancelableQueue 函式 (ks.h)
KsMoveIrpsOnCancelableQueue 函式會根據從 minidriver 定義 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
指定要呼叫的 minidriver 定義 KStrIrpListCallback 函式,以指出是否應該將特定 IRP 從 SourceList 移至 DestinationList,或是否應該終止列舉。
[in] Context
傳遞至 ListCallback的內容。
傳回值
如果已完整列舉清單,則傳回STATUS_SUCCESS;否則,會傳回 minidriver 定義 KStrIrpListCallback 回呼函式中斷列舉的任何警告或錯誤。
言論
如果 KStrIrpListCallback 函式表示應該移動 IRP,是否目前取得它。 如果 KStrIrpListCallback 傳回STATUS_SUCCESS,則會移動 IRP。 如果傳回STATUS_NO_MATCH,則不會移動 IRP。 任何其他傳回警告或錯誤值都會終止列舉,並由函式傳回。 KStrIrpListCallback不應該傳回STATUS_NO_MATCH值做為錯誤。 KStrIrpListCallback 會在 DISPATCH_LEVEL呼叫。 KStrIrpListCallback 一律會在結尾至少呼叫一次,並具有 NULL IRP 值來完成清單列舉。
KsMoveIrpsOnCancelableQueue 會繼續執行清單,直到回呼函式指出應該終止搜尋或到達清單結尾為止。 KsMoveIrpsOnCancelableQueue 會盡可能使用提供的微調鎖定,將全系統取消微調鎖定的使用降至最低,以便同步存取。 KsMoveIrpsOnCancelableQueue 不允許在移動 IRP 時修改取消例程。
函式可以在 DISPATCH_LEVEL 或更低版本呼叫。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ks.h (包括 Ks.h) |
連結庫 | Ks.lib |