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
Unterstützter Client (Mindestversion) Verfügbar in Windows Vista und höheren Versionen von Windows.
Zielplattform Universal
Kopfzeile wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene

Siehe auch

IO_WORKITEM

IoAllocateWorkItem-

IoQueueWorkItem-

IoQueueWorkItemEx-

IoSizeofWorkItem-

IoUninitializeWorkItem-