OpenCBM
Data Fields
QUEUE Struct Reference

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.
 

Detailed Description

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.

Definition at line 40 of file queue.h.


The documentation for this struct was generated from the following file: