OpenCBM
|
A QUEUE object A QUEUE object is an object which can be used to queue IRPs for processing. This QUEUE object is optimized for being polled from an own worker thread. Anyway, a concept called FastStart is also implemented, which allows some IRPs to be completed immediately, without being queued, if no IRP is executed yet and the caller has stated that he wants this IRP to be started fast if possible. More...
#include <queue.h>
Data Fields | |
IO_CSQ | IrpQueue |
the structure for the cancel-safe queue | |
LIST_ENTRY | IrpListHead |
the list head for the IRP list | |
KSPIN_LOCK | IrpListSpinlock |
the spin lock to protect the IRP list | |
KEVENT | NotEmptyEvent |
signal that the queue is not empty | |
PCBMDRIVER_STARTIO | DriverStartIo |
pointer to the StartIo function to be called | |
LONG | IsStalled |
counter; if != 0, this queue is stalled, that is, no entries are dequeued. | |
LONG | IsDropping |
counter; if != 0, this queue is dropping, that is, no new entries are queued into the queue; instead, the IRPs are being completed. | |
NTSTATUS | DroppingReturnStatus |
The NTSTATUS return code with which the IRP are completed if we are dropping IRPs. | |
PIRP | CurrentIrp |
Pointer to the IRP which is currently processed. | |
A QUEUE object A QUEUE object is an object which can be used to queue IRPs for processing. This QUEUE object is optimized for being polled from an own worker thread. Anyway, a concept called FastStart is also implemented, which allows some IRPs to be completed immediately, without being queued, if no IRP is executed yet and the caller has stated that he wants this IRP to be started fast if possible.