struttura IO_STATUS_BLOCK (wdm.h)
Un driver imposta un blocco di stato di I/O di IRP per indicare lo stato finale di una richiesta di I/O, prima di chiamare IoCompleteRequest per IRP.
Sintassi
typedef struct _IO_STATUS_BLOCK {
union {
NTSTATUS Status;
PVOID Pointer;
};
ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
Membri
Status
Questo è lo stato di completamento, STATUS_SUCCESS se l'operazione richiesta è stata completata correttamente o un avviso informativo o un errore STATUS_xxx valore. Per altre informazioni, vedere Uso di valori NTSTATUS.
Pointer
Riservato. Solo per uso interno.
Information
Questa proprietà è impostata su un valore dipendente dalla richiesta. Ad esempio, al completamento corretto di una richiesta di trasferimento, questo valore viene impostato sul numero di byte trasferiti. Se una richiesta di trasferimento viene completata con un altro STATUS_XXX, questo membro è impostato su zero.
Osservazioni
A meno che la routine di invio di un driver non completi un IRP con un valore di stato di errore, il driver di livello più basso nella catena imposta spesso il blocco di stato di I/O di IRP sui valori che verranno restituiti al richiedente originale dell'operazione di I/O.
Le routine IoCompletion di driver di livello superiore in genere controllano il blocco di stato di I/O nei runtime di integrazione completati da driver inferiori. Per impostazione predefinita, il blocco di stato di I/O in un IRP è l'unica informazione passata dal driver di dispositivo sottostante a tutti i driver di livello superiore routine IoCompletion.
Il sistema operativo implementa routine di supporto che scrivono valori IO_STATUS_BLOCK nei buffer di output forniti dal chiamante. Ad esempio, vedere ZwOpenFile o NtOpenFile. Queste routine restituiscono codici di stato che potrebbero non corrispondere ai codici di stato nelle strutture di IO_STATUS_BLOCK. Se una di queste routine restituisce STATUS_PENDING, il chiamante deve attendere il completamento dell'operazione di I/O e quindi controllare il codice di stato nella struttura IO_STATUS_BLOCK per determinare lo stato finale dell'operazione. Se la routine restituisce un codice di stato diverso da STATUS_PENDING, il chiamante deve basarsi su questo codice di stato anziché sul codice di stato nella struttura IO_STATUS_BLOCK.
Per altre informazioni, vedere blocchi di stato di I/O.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h) |