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 |