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 L'IRP.

Sintassi

typedef struct _IO_STATUS_BLOCK {
  union {
    NTSTATUS Status;
    PVOID    Pointer;
  };
  ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;

Members

Status

Questo è lo stato di completamento, STATUS_SUCCESS se l'operazione richiesta è stata completata correttamente o un avviso informativo, avviso o errore STATUS_ valoreXXX . Per altre informazioni, vedere Uso dei valori NTSTATUS.

Pointer

Riservato. Solo per uso interno.

Information

Questo valore è impostato su un valore dipendente dalla richiesta. Ad esempio, al completamento 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 viene impostato su zero.

Commenti

A meno che la routine dispatch di un driver non completi un IRP con un valore di stato di errore, il driver di livello più basso nella catena imposta frequentemente il blocco di stato I/O di I/O di IRP sui valori che verranno restituiti al richiedente originale dell'operazione di I/O.

Le routine IoCompletion dei driver di livello superiore controllano in genere 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 tutte le routine IoCompletion dei driver di livello superiore.

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 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.

Requisiti

Requisito Valore
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)

Vedi anche

IO_STACK_LOCATION

IRP

IoCompleteRequest

IoSetCompletionRoutine