Поделиться через


структура WORK_QUEUE_ITEM (wdm.h)

Структура WORK_QUEUE_ITEM используется для отправки рабочих элементов в системную рабочую очередь.

Предупреждение

Используйте эту структуру с особой осторожностью. См. следующий раздел Примечаний .

Синтаксис

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

Члены

List

Структура списка с удвоением связей. Эта структура используется для добавления рабочего элемента в системную рабочую очередь.

WorkerRoutine

Указатель на подпрограмму обратного вызова, которая обрабатывает этот рабочий элемент, когда рабочий элемент выведен из очереди. Эта подпрограмма обратного вызова объявляется следующим образом:

VOID
(*PWORKER_THREAD_ROUTINE)(
    IN PVOID Parameter
    );

Параметр

Указатель контекстной информации, указанный в элементе Parameter .

Parameter

Указатель на контекстные сведения, передаваемые в подпрограмму обратного вызова, указанную в элементе WorkerRoutine .

Комментарии

Чтобы инициализировать структуру WORK_QUEUE_ITEM, вызовите ExInitializeWorkItem.

Чтобы отправить инициализированный рабочий элемент в системную рабочую очередь, вызовите ExQueueWorkItem.

ExInitializeWorkItem и ExQueueWorkItem можно использовать только в тех случаях, когда указанный рабочий элемент не связан с объектом устройства или стеком устройств. Во всех остальных случаях драйверы должны использовать IoAllocateWorkItem, IoFreeWorkItem и IoQueueWorkItem, так как только эти подпрограммы гарантируют, что объект устройства, связанный с указанным рабочим элементом, остается доступным до обработки рабочего элемента.

Требования

Требование Значение
Заголовок wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

См. также раздел

ExInitializeWorkItem

ExQueueWorkItem

IoAllocateWorkItem

IoFreeWorkItem

IoQueueWorkItem