Fonction IoInitializeWorkItem (wdm.h)

La routine IoInitializeWorkItem initialise un élément de travail que l’appelant a déjà alloué.

Syntaxe

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

Paramètres

[in] IoObject

Pointeur vers l’objet pilote de l’appelant ou vers l’un des objets d’appareil de l’appelant. Si l’appelant passe ultérieurement l’élément de travail à IoQueueWorkItem, IoObject doit pointer vers un objet d’appareil.

[in] IoWorkItem

Pointeur vers la structure IO_WORKITEM à initialiser.

Valeur de retour

None

Remarques

Le pilote alloue son propre stockage pour une structure IO_WORKITEM , puis appelle IoInitializeWorkItem pour l’initialiser. La mémoire doit être allouée à partir d’un pool non paginé. Pour déterminer le nombre d’octets nécessaires pour contenir une structure IO_WORKITEM , appelez IoSizeofWorkItem.

Une structure IO_WORKITEM initialisée par IoInitializeWorkItemdoit être non initialisée par IoUninitializeWorkItem avant d’être libérée.

Une routine associée, IoAllocateWorkItem, alloue et initialise un élément de travail. En combinant l’allocation et l’initialisation en un seul appel, IoAllocateWorkItem peut être plus pratique pour certains pilotes que IoInitializeWorkItem, qui effectue l’initialisation uniquement. Toutefois, IoInitializeWorkItem est requis par les pilotes qui doivent initialiser les éléments de travail dans le stockage précédemment alloué.

Par exemple, un pilote peut allouer un bloc de stockage pour un pool d’éléments de travail. Le pilote peut appeler IoInitializeWorkItem pour initialiser un élément de travail lorsque l’élément de travail est alloué à partir du pool. Le pilote peut appeler IoUninitializeWorkItem pour annuler la initialisation de l’élément de travail lorsqu’il est retourné au pool. Pendant l’allocation de stockage initiale pour le pool, le pilote peut appeler IoSizeofWorkitem pour déterminer la quantité de stockage à allouer pour chaque élément de travail.

Pour plus d’informations sur les éléments de travail, consultez Threads de travail système.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et les versions plus récentes de Windows.
Plateforme cible Universal
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL N’importe quel niveau

Voir aussi

IO_WORKITEM

IoAllocateWorkItem

IoQueueWorkItem

IoQueueWorkItemEx

IoSizeofWorkItem

IoUninitializeWorkItem