Freigeben über


WORK_QUEUE_ITEM-Struktur (wdm.h)

Die WORK_QUEUE_ITEM-Struktur wird verwendet, um Arbeitselemente in einer Systemarbeitswarteschlange zu posten.

Warnung

Verwenden Sie diese Struktur mit äußerster Vorsicht. Weitere Informationen finden Sie im abschnitt "Hinweise" .

Syntax

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

Member

List

Doppelt verknüpfte Listenstruktur. Diese Struktur wird verwendet, um das Arbeitselement der Systemarbeitswarteschlange hinzuzufügen.

WorkerRoutine

Zeiger auf eine Rückrufroutine, die dieses Arbeitselement verarbeitet, wenn das Arbeitselement entfernt wird. Diese Rückrufroutine wird wie folgt deklariert:

VOID
(*PWORKER_THREAD_ROUTINE)(
    IN PVOID Parameter
    );

Parameter

Kontextinformationszeiger, der im Parameter-Element angegeben ist.

Parameter

Zeiger auf Kontextinformationen, die an die Rückrufroutine übergeben werden sollen, die im WorkerRoutine-Member angegeben ist.

Hinweise

Um eine WORK_QUEUE_ITEM-Struktur zu initialisieren, rufen Sie ExInitializeWorkItem auf.

Rufen Sie ExQueueWorkItem auf, um das initialisierte Arbeitselement in einer Systemarbeitswarteschlange zu posten.

ExInitializeWorkItem und ExQueueWorkItem können nur in Fällen verwendet werden, in denen das angegebene Arbeitselement keinem Geräteobjekt oder Gerätestapel zugeordnet ist. In allen anderen Fällen sollten Treiber IoAllocateWorkItem, IoFreeWorkItem und IoQueueWorkItem verwenden, da nur diese Routinen sicherstellen, dass das dem angegebenen Arbeitselement zugeordnete Geräteobjekt verfügbar bleibt, bis das Arbeitselement verarbeitet wurde.

Anforderungen

Anforderung Wert
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

Weitere Informationen

ExInitializeWorkItem

ExQueueWorkItem

IoAllocateWorkItem

IoFreeWorkItem

IoQueueWorkItem