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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für