Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |