IoStartPacket 函数 (ntifs.h)
IoStartPacket 例程调用驱动程序的 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
指定驱动程序提供的 取消 例程的入口点。
返回值
没有
言论
如果驱动程序已忙于处理目标设备对象的请求,则数据包将排队在设备队列中。 否则,此例程使用指定的 IRP 调用驱动程序的 StartIo 例程。
如果提供了非 NULL CancelFunction 指针,则会在 IRP 中设置它,以便在 IRP 完成之前取消 IRP 时调用驱动程序的 取消 例程。
没有 StartIo 例程的驱动程序无法调用 IoStartPacket。
IoStartPacket 的调用方必须在 IRQL <= DISPATCH_LEVEL 上运行。 通常,此例程是从 IRQL = PASSIVE_LEVEL的设备驱动程序调度例程调用的。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 |
目标平台 | 普遍 |
标头 | ntifs.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (请参阅“备注”部分) |