WORK_QUEUE_ITEM structure

The WORK_QUEUE_ITEM structure is used to post a work items to a system work queue. Use this structure with extreme caution. (See the following Remarks section.)

Syntax


typedef struct _WORK_QUEUE_ITEM {
  LIST_ENTRY             List;
  PWORKER_THREAD_ROUTINE WorkerRoutine;
  volatile PVOID         Parameter;
} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;

Members

List

Doubly linked list structure. This structure is used to add the work item to the system work queue.

WorkerRoutine

Pointer to a callback routine that processes this work item when the work item is dequeued. This callback routine is declared as follows:


VOID
(*PWORKER_THREAD_ROUTINE)(
    IN PVOID Parameter
    );

Parameter

Context information pointer specified in the Parameter member.

Parameter

Pointer to context information to be passed to the callback routine specified in the WorkerRoutine member.

Remarks

To initialize a WORK_QUEUE_ITEM structure, call ExInitializeWorkItem.

To post the initialized work item to a system work queue, call ExQueueWorkItem.

ExInitializeWorkItem and ExQueueWorkItem can only be used in cases where the specified work item is not associated with any device object or device stack. In all other cases, drivers should use IoAllocateWorkItem, IoFreeWorkItem, and IoQueueWorkItem, because only these routines ensure that the device object associated with the specified work item remains available until the work item has been processed.

Requirements

Header

Wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, or Fltkernel.h)

See also

ExInitializeWorkItem
ExQueueWorkItem
IoAllocateWorkItem
IoFreeWorkItem
IoQueueWorkItem

 

 

Send comments about this topic to Microsoft

Show: