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 或更低版本呼叫。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | ks.h (包含 Ks.h) |
程式庫 | Ks.lib |