共用方式為


IoCsqRemoveIrp 函式 (wdm.h)

IoCsqRemoveIrp 例程會從佇列中移除特定的 IRP。

語法

PIRP IoCsqRemoveIrp(
  [in, out] PIO_CSQ             Csq,
  [in, out] PIO_CSQ_IRP_CONTEXT Context
);

參數

[in, out] Csq

驅動程式取消安全 IRP 佇列 IO_CSQ結構的指標 。 這個結構必須由 IoCsqInitializeIoCsqInitializeEx初始化。

[in, out] Context

識別要移除之 IRP 之 IO_CSQ_IRP_CONTEXT 結構的指標。 當 IRP 第一次插入佇列時,IoCsqInsertIrpIoCsqInsertIrpEx 會初始化IO_CSQ_IRP_CONTEXT結構。

傳回值

這個例程會傳回已從佇列中移除之 IRP 的指標,如果已取消該 IRP,則傳回 NULL

備註

IoCsqRemoveIrp 會使用佇列的分派例程來移除 IRP。 IoCsqRemoveIrp 例程:

  1. 呼叫佇列的 CsqAcquireLock 例程來鎖定佇列。
  2. 使用 IrpContext 參數來判斷要移除的 IRP,並呼叫佇列的 CsqRemoveIrp 例程來移除該 IRP。
  3. 呼叫佇列的 CsqReleaseLock 例程來解除鎖定佇列。
驅動程式可以使用 IoCsqRemoveNextIrp 例程來移除符合特定準則的 IRP。 如需詳細資訊,請參閱 取消安全 IRP 佇列

請注意, IoCsqXxx 例程使用 IRP 的 DriverContext[3] 成員來保存 IRP 內容資訊。 使用這些例程將 IRP 排入佇列的驅動程式必須讓該成員保持未使用。

IoCsqRemoveIrp 的呼叫端必須在 IRQL <= DISPATCH_LEVEL執行。 驅動程式的回呼例程必須在該 IRQL 正常運作。

規格需求

需求
最低支援的用戶端 可在 Windows XP 和更新版本的 Windows 中使用。 也必須在 Windows 2000 和 Windows 98/Me 中運作的驅動程式可以改為連結到 Csq.lib,以使用例程。
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (请参阅一节)

另請參閱

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveNextIrp