Funzione IoInitializeWorkItem (wdm.h)
La routine IoInitializeWorkItem inizializza un elemento di lavoro già allocato dal chiamante.
Sintassi
void IoInitializeWorkItem(
[in] PVOID IoObject,
[in] PIO_WORKITEM IoWorkItem
);
Parametri
[in] IoObject
Puntatore all'oggetto driver del chiamante o a uno degli oggetti dispositivo del chiamante. Se il chiamante passerà successivamente l'elemento di lavoro a IoQueueWorkItem, IoObject deve puntare a un oggetto dispositivo.
[in] IoWorkItem
Puntatore alla struttura IO_WORKITEM da inizializzare.
Valore restituito
Nessuno
Osservazioni
Il driver alloca la propria risorsa di archiviazione per una struttura IO_WORKITEM e quindi chiama IoInitializeWorkItem per inizializzarla. La memoria deve essere allocata dal pool non di paging. Per determinare il numero di byte necessari per contenere una struttura di IO_WORKITEM, chiamare IoSizeofWorkItem.
Una struttura IO_WORKITEM inizializzata da IoInitializeWorkItemdeve essere inizializzata da IoUninitializeWorkItem prima che venga liberata.
Routine correlata, IoAllocateWorkItem, alloca e inizializza un elemento di lavoro. Combinando l'allocazione e l'inizializzazione in una singola chiamata, IoAllocateWorkItem potrebbe essere più utile per alcuni driver da usare rispetto a IoInitializeWorkItem, che esegue solo l'inizializzazione. Tuttavia, IoInitializeWorkItem è richiesto dai driver che devono inizializzare gli elementi di lavoro nella risorsa di archiviazione allocata in precedenza.
Ad esempio, un driver potrebbe allocare un blocco di archiviazione per un pool di elementi di lavoro. Il driver può chiamare IoInitializeWorkItem per inizializzare un elemento di lavoro quando l'elemento di lavoro viene allocato dal pool. Il driver può chiamare IoUninitializeWorkItem per annullare l'inizializzazione dell'elemento di lavoro quando viene restituito al pool. Durante l'allocazione di archiviazione iniziale per il pool, il driver può chiamare IoSizeofWorkitem per determinare la quantità di spazio di archiviazione da allocare per ogni elemento di lavoro.
Per altre informazioni sugli elementi di lavoro, vedere thread di lavoro di sistema.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile in Windows Vista e versioni successive di Windows. |
piattaforma di destinazione | Universale |
intestazione |
wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
libreria |
NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | Qualsiasi livello |