共用方式為


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

另請參閱

KStrIrpListCallback