PDOKAN_IO_BATCH Struct Reference

Dokan IO batch buffer. More...

#include <dokani.h>

Data Fields

PDOKAN_INSTANCE DokanInstance
 
DWORD NumberOfBytesTransferred
 
BOOL MainPullThread
 
BOOL PoolAllocated
 
LONG EventContextBatchCount
 
EVENT_CONTEXT EventContext [1]
 

Detailed Description

Dokan IO batch buffer.

This is used to pull batch of events from the kernel.

For each EVENT_CONTEXT that is pulled from the kernel, a DOKAN_IO_EVENT is allocated with its EventContext pointer placed to the IoBatch buffer. DOKAN_IO_EVENT will be dispatched for being processed by a pool thread (or the main pull thread). When the event is processed, the DOKAN_IO_EVENT will be freed and the EventContextBatchCount will be decremented. When it reaches 0, the buffer is free or pushed to the memory pool.

Field Documentation

PDOKAN_INSTANCE PDOKAN_IO_BATCH::DokanInstance

Dokan instance linked to the batch

EVENT_CONTEXT PDOKAN_IO_BATCH::EventContext[1]

The actual buffer used to pull events from kernel. It may contain multiple EVENT_CONTEXT depending on what the kernel has to offer right now. A high activity will generate multiple EVENT_CONTEXT to be batched in a single pull.

LONG PDOKAN_IO_BATCH::EventContextBatchCount

Number of actual EVENT_CONTEXT stored in EventContext. This is used as a shared buffer counter that is decremented when an event is processed. When it reaches 0, the buffer is free or pushed to the memory pool.

BOOL PDOKAN_IO_BATCH::MainPullThread

Whether it is used by the Main pull thread that wait indefinitely in kernel compared to volatile pool threads

DWORD PDOKAN_IO_BATCH::NumberOfBytesTransferred

Size read from kernel that is hold in EventContext

BOOL PDOKAN_IO_BATCH::PoolAllocated

Whether this object was allocated from the memory pool. Large Write events will allocate a specific buffer that will not come from the memory pool.


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