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 結構的指標。 此結構必須由 ioCsqInitialize 或 IoCsqInitializeEx初始化。
[in, out] Context
識別要移除之 IRP 之 IO_CSQ_IRP_CONTEXT 結構的指標。 IO_CSQ_IRP_CONTEXT 結構會由ioCsqInsertIrp 或 IoCsqInsertIrpEx 在 IRP 第一次插入佇列時初始化。
傳回值
此例程會傳回已從佇列中移除之 IRP 的指標,或取消該 IRP 時 NULL。
言論
IoCsqRemoveIrp 會使用佇列的分派例程來移除 IRP。 IoCsqRemoveIrp 例程:
- 呼叫佇列的 CsqAcquireLock 例程來鎖定佇列。
- 使用 IrpContext 參數來判斷要移除的 IRP,並呼叫佇列的 CsqRemoveIrp 例程來移除該 IRP。
- 呼叫佇列的 CsqReleaseLock 例程來解除鎖定佇列。
請注意,IoCsqXxx 例程使用 DriverContext[3] IRP 成員來保存 IRP 內容資訊。 使用這些例程將 IRP 排入佇列的驅動程式必須讓該成員未使用。
IoCsqRemoveIrp 的呼叫端必須在 IRQL <= DISPATCH_LEVEL上執行。 驅動程式的回呼例程必須在該 IRQL 上正常運作。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於 Windows XP 和更新版本的 Windows。 也必須在 Windows 2000 和 Windows 98/Me 中運作的驅動程式可以改為連結到 Csq.lib 以使用例程。 |
目標平臺 | 普遍 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (請參閱一節) |