IoCsqInitializeEx 函数 (wdm.h)

IoCsqInitializeEx 例程初始化取消安全的 IRP 队列的调度表。

语法

NTSTATUS IoCsqInitializeEx(
  [out] PIO_CSQ                       Csq,
  [in]  PIO_CSQ_INSERT_IRP_EX         CsqInsertIrp,
  [in]  PIO_CSQ_REMOVE_IRP            CsqRemoveIrp,
  [in]  PIO_CSQ_PEEK_NEXT_IRP         CsqPeekNextIrp,
  [in]  PIO_CSQ_ACQUIRE_LOCK          CsqAcquireLock,
  [in]  PIO_CSQ_RELEASE_LOCK          CsqReleaseLock,
  [in]  PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp
);

参数

[out] Csq

指向 IoCsqInitializeEx初始化的 IO_CSQ 结构的指针。

[in] CsqInsertIrp

指向驱动程序定义的 CsqInsertIrpEx 函数的指针,该函数适用于驱动程序的取消安全的 IRP 队列。

[in] CsqRemoveIrp

指向驱动程序定义的 CsqRemoveIrp 函数的指针,该函数适用于驱动程序的取消安全的 IRP 队列。

[in] CsqPeekNextIrp

指向驱动程序定义的 CsqPeekNextIrp 函数的指针,该函数适用于驱动程序的取消安全的 IRP 队列。

[in] CsqAcquireLock

指向驱动程序定义的 CsqAcquireLock 函数的指针,该函数适用于驱动程序的取消安全的 IRP 队列。

[in] CsqReleaseLock

指向驱动程序定义的 CsqReleaseLock 函数的指针,该函数适用于驱动程序的取消安全的 IRP 队列。

[in] CsqCompleteCanceledIrp

指向驱动程序定义的 CsqCompleteCanceledIrp 函数的指针,该函数适用于驱动程序的取消安全的 IRP 队列。

返回值

IoCsqInitializeEx 在成功时返回STATUS_SUCCESS,或者在失败时返回相应的错误代码。

言论

IoCsqInitializeIoCsqInitializeEx 例程初始化描述驱动程序取消安全的 IRP 队列的 IO_CSQ 结构。 可以使用 IoCsqInitializeEx 指定具有扩展功能的 IRP 队列,而不是由 IoCsqInitialize指定的 IRP 队列:

  • 驱动程序实现 CsqInsertIrpEx 例程,而不是 CsqInsertIrp 例程。 CsqInsertIrpEx 采用附加参数,InsertContext。 当驱动程序调用 IoCsqInsertIrpEx 以插入 IRP 时,它将指定作为 insertContext 传递的值。
  • IoCsqInsertIrpEx 返回 CsqInsertIrpEx的返回值。 驱动程序可以使用返回值来指示插入作是成功还是失败。
否则,IoCsqInitializeEx 的效果与 IoCsqInitialize的效果相同。 有关详细信息,请参阅 Cancel-Safe IRP 队列

请注意,IoCsqXxx 例程使用 IRP 的 DriverContext[3] 成员来保存 IRP 上下文信息。 使用这些例程对 IRP 进行排队的驱动程序必须将该成员保留为未使用状态。

要求

要求 价值
最低支持的客户端 在 Windows Server 2003 及更高版本的 Windows作系统中可用。 该例程在适用于 Windows Server 2003 的 Windows 驱动程序工具包(WDK)和驱动程序开发工具包(DDK)随附的 Csq.lib 库中也提供。 还必须在 Windows XP、Windows 2000 和 Windows 98/Me 上运行的驱动程序可以改为链接到 Csq.lib 以使用例程。
目标平台 普遍
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别

另请参阅

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp