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
指向驱动程序取消安全 IRP 队列的驱动程序定义的 CsqInsertIrpEx 函数的指针。
[in] CsqRemoveIrp
指向驱动程序取消安全 IRP 队列的驱动程序定义的 CsqRemoveIrp 函数的指针。
[in] CsqPeekNextIrp
指向驱动程序取消安全 IRP 队列的驱动程序定义的 CsqPeekNextIrp 函数的指针。
[in] CsqAcquireLock
指向驱动程序取消安全 IRP 队列的驱动程序定义的 CsqAcquireLock 函数的指针。
[in] CsqReleaseLock
指向驱动程序取消安全 IRP 队列的驱动程序定义的 CsqReleaseLock 函数的指针。
[in] CsqCompleteCanceledIrp
指向驱动程序取消安全 IRP 队列的驱动程序定义的 CsqCompleteCanceledIrp 函数的指针。
返回值
IoCsqInitializeEx 在成功时返回STATUS_SUCCESS,或在失败时返回相应的错误代码。
注解
IoCsqInitialize 和 IoCsqInitializeEx 例程初始化描述驱动程序取消安全 IRP 队列的IO_CSQ结构。 可以使用 IoCsqInitializeEx 指定具有扩展功能的 IRP 队列,而不是 IoCsqInitialize 指定的队列:
- 驱动程序实现 CsqInsertIrpEx 例程,而不是 CsqInsertIrp 例程。 CsqInsertIrpEx 采用其他参数 InsertContext。 当驱动程序调用 IoCsqInsertIrpEx 插入 IRP 时,它将指定作为 InsertContext 传递的值。
- IoCsqInsertIrpEx 返回 CsqInsertIrpEx 的返回值。 驱动程序可以使用返回值来指示插入操作是成功还是失败。
请注意, IoCsqXxx 例程使用 IRP 的 DriverContext[3] 成员来保存 IRP 上下文信息。 使用这些例程对 IRP 进行排队的驱动程序必须使该成员处于未使用状态。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Server 2003 及更高版本的 Windows 操作系统中可用。 该例程也可在随 Windows 驱动程序工具包 (WDK) 和适用于 Windows Server 2003 的驱动程序开发工具包 (DDK) 随附的 Csq.lib 库中提供。 还必须在 Windows XP、Windows 2000 和 Windows 98/Me 上运行的驱动程序可以改为链接到 Csq.lib 以使用例程。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 |