Partager via


IoInitializeWorkItem, fonction (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 de 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

Aucun

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 sa libération.

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 à utiliser que IoInitializeWorkItem, qui initialise uniquement. Toutefois, IoInitializeWorkItem est nécessaire par les pilotes qui doivent initialiser des é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 l’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.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows Vista et versions ultérieures de Windows.
plateforme cible Universel
d’en-tête wdm.h (include 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