Freigeben über


IoInitializeWorkItem-Funktion (wdm.h)

Die IoInitializeWorkItem Routine initialisiert eine Arbeitsaufgabe, die der Aufrufer bereits zugewiesen hat.

Syntax

void IoInitializeWorkItem(
  [in] PVOID        IoObject,
  [in] PIO_WORKITEM IoWorkItem
);

Parameter

[in] IoObject

Zeigen Sie auf das Treiberobjekt des Aufrufers oder auf eines der Geräteobjekte des Aufrufers. Wenn der Aufrufer die Arbeitsaufgabe später an IoQueueWorkItem-übergibt, muss IoObject- auf ein Geräteobjekt verweisen.

[in] IoWorkItem

Zeiger auf die IO_WORKITEM Struktur, die initialisiert werden soll.

Rückgabewert

Nichts

Bemerkungen

Der Treiber weist einen eigenen Speicher für eine IO_WORKITEM Struktur zu und ruft dann IoInitializeWorkItem- auf, um es zu initialisieren. Der Speicher muss aus einem nicht ausgespeicherten Pool zugewiesen werden. Rufen Sie IoSizeofWorkItem-auf, um die Anzahl der Bytes zu ermitteln, die zum Halten einer IO_WORKITEM-Struktur erforderlich sind.

Eine IO_WORKITEM Struktur, die von IoInitializeWorkItem-initialisiert wird, muss von IoUninitializeWorkItem- nicht initialisiert werden, bevor sie freigegeben wird.

Eine verwandte Routine, IoAllocateWorkItem-, weist eine Arbeitsaufgabe zu und initialisiert sie. Durch die Kombination von Zuordnung und Initialisierung in einem einzelnen Aufruf ist IoAllocateWorkItem- für einige Treiber möglicherweise praktischer als IoInitializeWorkItem-, was nur initialisiert wird. IoInitializeWorkItem- ist jedoch von Treibern erforderlich, die Arbeitsaufgaben im zuvor zugewiesenen Speicher initialisieren müssen.

Ein Treiber kann z. B. einen Speicherblock für einen Arbeitsaufgabenpool zuweisen. Der Treiber kann IoInitializeWorkItem- aufrufen, um eine Arbeitsaufgabe zu initialisieren, wenn die Arbeitsaufgabe aus dem Pool zugewiesen wird. Der Treiber kann IoUninitializeWorkItem- aufrufen, um die Arbeitsaufgabe zu entinitialisieren, wenn sie an den Pool zurückgegeben wird. Während der anfänglichen Speicherzuweisung für den Pool kann der Treiber IoSizeofWorkitem- aufrufen, um zu bestimmen, wie viel Speicherplatz für jede Arbeitsaufgabe zugewiesen werden soll.

Weitere Informationen zu Arbeitsaufgaben finden Sie unter System Worker Threads.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen von Windows.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- Beliebige Ebene

Siehe auch

IO_WORKITEM

IoAllocateWorkItem-

IoQueueWorkItem-

IoQueueWorkItemEx-

IoSizeofWorkItem-

IoUninitializeWorkItem-