ioStartPacket 函数 (wdm.h)
IoStartPacket 例程使用给定的 IRP 调用驱动程序的 StartIo 例程,或者将 IRP 插入到与给定设备对象关联的设备队列(如果设备已经繁忙)。
语法
void IoStartPacket(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp,
[in, optional] PULONG Key,
[in, optional] PDRIVER_CANCEL CancelFunction
);
参数
[in] DeviceObject
指向 IRP 的目标设备对象的指针。
[in] Irp
指向要处理的 IRP 的指针。
[in, optional] Key
指向一个值的指针,该值确定将数据包插入设备队列的位置。 如果为零,数据包将插入到设备队列的末尾。
[in, optional] CancelFunction
指定驱动程序提供的 Cancel 例程的入口点。
返回值
无
备注
如果驱动程序已忙于处理目标设备对象的请求,则数据包在设备队列中排队。 否则,此例程使用指定的 IRP 调用驱动程序的 StartIo 例程。
如果提供了非 NULL CancelFunction 指针,则会在 IRP 中设置该指针,以便在 IRP 完成之前取消该 IRP 时调用驱动程序的 Cancel 例程。
没有 StartIo 例程的驱动程序不能调用 IoStartPacket。
IoStartPacket 的调用方必须在 IRQL <= DISPATCH_LEVEL 运行。 通常,此例程是从设备驱动程序的 Dispatch 例程(IRQL = PASSIVE_LEVEL)调用的。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (请参阅备注部分) |