// ntifs.h
VOID IoStartNextPacketByKey(
[in] PDEVICE_OBJECT DeviceObject,
[in] BOOLEAN Cancelable,
[in] ULONG Key
);
View the official Windows Driver Kit DDI reference
// wdm.h
VOID IoStartNextPacketByKey(
[in] PDEVICE_OBJECT DeviceObject,
[in] BOOLEAN Cancelable,
[in] ULONG Key
);
View the official Windows Driver Kit DDI reference
No description available.
The IoStartNextPacketByKey routine dequeues the next I/O request packet from the specified device object's associated device queue according to a specified sort-key value and calls the driver's StartIo routine with that IRP.
DeviceObject
[in]Pointer to the device object for which the IRP is to be dequeued.
Cancelable
[in]Specifies whether IRPs in the device queue can be canceled.
Key
[in]Specifies the sort key that determines which entry to remove from the queue.
If there are no IRPs currently in the device queue for the target device object, this routine simply returns control to the caller.
If the driver passed a pointer to a cancel routine when it called IoStartPacket, it should pass TRUE in this routine's Cancelable parameter. If Cancelable is TRUE, the I/O manager will use the cancel spin lock to protect the device queue and the current IRP.
Drivers that do not have a StartIo routine cannot call IoStartNextPacketByKey.
Callers of IoStartNextPacketByKey must be running at IRQL <= DISPATCH_LEVEL. Usually, this routine is called from a device driver's DpcForIsr or CustomDpc routine, both of which are run at IRQL = DISPATCH_LEVEL.
The IoStartNextPacketByKey routine dequeues the next I/O request packet from the specified device object's associated device queue according to a specified sort-key value and calls the driver's StartIo routine with that IRP.
DeviceObject
[in]Pointer to the device object for which the IRP is to be dequeued.
Cancelable
[in]Specifies whether IRPs in the device queue can be canceled.
Key
[in]Specifies the sort key that determines which entry to remove from the queue.
If there are no IRPs currently in the device queue for the target device object, this routine simply returns control to the caller.
If the driver passed a pointer to a cancel routine when it called IoStartPacket, it should pass TRUE in the Cancelable parameter. If Cancelable is TRUE, the I/O manager will use the cancel spin lock to protect the device queue and the current IRP.
Drivers that do not have a StartIo routine cannot call IoStartNextPacketByKey.
Callers of IoStartNextPacketByKey must be running at IRQL <= DISPATCH_LEVEL. Usually, this routine is called from a device driver's DpcForIsr or CustomDpc routine, both of which are run at IRQL = DISPATCH_LEVEL.