IoInitializeWorkItem-Funktion (wdm.h)

Die IoInitializeWorkItem-Routine initialisiert ein Arbeitselement, das der Aufrufer bereits zugewiesen hat.

Syntax

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

Parameter

[in] IoObject

Zeiger auf das Treiberobjekt des Aufrufers oder auf eines der Geräteobjekte des Aufrufers. Wenn der Aufrufer das Arbeitselement später an IoQueueWorkItem übergibt, muss IoObject auf ein Geräteobjekt verweisen.

[in] IoWorkItem

Zeiger auf die zu initialisierende IO_WORKITEM-Struktur.

Rückgabewert

Keine

Bemerkungen

Der Treiber weist einen eigenen Speicher für eine IO_WORKITEM-Struktur zu und ruft dann IoInitializeWorkItem auf, um ihn zu initialisieren. Arbeitsspeicher muss aus einem nicht ausgestellten Pool zugewiesen werden. Rufen Sie IoSizeofWorkItem auf, um die Anzahl der Bytes zu bestimmen, die für eine IO_WORKITEM Struktur erforderlich sind.

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

Eine verwandte Routine, IoAllocateWorkItem, weist ein Arbeitselement zu und initialisiert es. Durch die Kombination von Zuordnung und Initialisierung in einem einzelnen Aufruf ist IoAllocateWorkItem für einige Treiber möglicherweise bequemer als IoInitializeWorkItem, das nur die Initialisierung ausführt. IoInitializeWorkItem wird jedoch von Treibern benötigt, die Arbeitselemente im zuvor zugewiesenen Speicher initialisieren müssen.

Beispielsweise kann ein Treiber einem Pool von Arbeitselementen einen Speicherblock zuordnen. Der Treiber kann IoInitializeWorkItem aufrufen, um ein Arbeitselement zu initialisieren, wenn das Arbeitselement aus dem Pool zugewiesen wird. Der Treiber kann IoUninitializeWorkItem aufrufen, um die Initialisierung des Arbeitselements zu aufheben, wenn es an den Pool zurückgegeben wird. Während der anfänglichen Speicherzuordnung für den Pool kann der Treiber IoSizeofWorkitem aufrufen, um zu bestimmen, wie viel Speicher für die einzelnen Arbeitselemente zugewiesen werden soll.

Weitere Informationen zu Arbeitselementen finden Sie unter System Worker Threads.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und späteren Windows-Versionen.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene

Weitere Informationen

IO_WORKITEM

IoAllocateWorkItem

IoQueueWorkItem

IoQueueWorkItemEx

IoSizeofWorkItem

IoUninitializeWorkItem