IO_STATUS_BLOCK Struktur (wdm.h)
Ein Treiber legt den E/A-Statusblock eines IRP fest, um den endgültigen Status einer E/A-Anforderung anzugeben, bevor IoCompleteRequest- für das IRP aufgerufen wird.
Syntax
typedef struct _IO_STATUS_BLOCK {
union {
NTSTATUS Status;
PVOID Pointer;
};
ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
Angehörige
Status
Dies ist der Abschlussstatus, entweder STATUS_SUCCESS, wenn der angeforderte Vorgang erfolgreich abgeschlossen wurde, oder ein Informations-, Warnungs- oder Fehler STATUS_XXX- Wert. Weitere Informationen finden Sie unter Verwenden von NTSTATUS-Werten.
Pointer
Reserviert. Nur für die interne Verwendung.
Information
Dies wird auf einen anforderungsabhängigen Wert festgelegt. Bei erfolgreichem Abschluss einer Übertragungsanforderung wird dies beispielsweise auf die Anzahl der übertragenen Bytes festgelegt. Wenn eine Übertragungsanforderung mit einem anderen STATUS_XXX-abgeschlossen ist, wird dieses Element auf Null festgelegt.
Bemerkungen
Sofern die Verteilerroutine eines Treibers keinen IRP mit einem Fehlerstatuswert abgeschlossen hat, legt der Treiber auf der niedrigsten Ebene in der Kette häufig den I/O-Statusblock des IRP auf die Werte fest, die an den ursprünglichen Anforderer des E/A-Vorgangs zurückgegeben werden.
Die IoCompletion- Routinen höherer Treiber überprüfen in der Regel den E/A-Statusblock in IRPs, die von niedrigeren Treibern abgeschlossen wurden. Der E/A-Statusblock in einem IRP ist die einzige Information, die vom zugrunde liegenden Gerätetreiber an die IoCompletion Routinen der höheren Ebene zurückgesendet wird.
Das Betriebssystem implementiert Supportroutinen, die IO_STATUS_BLOCK Werte in vom Aufrufer bereitgestellte Ausgabepuffer schreiben. Siehe z. B. ZwOpenFile- oder NtOpenFile-. Diese Routinen geben Statuscodes zurück, die möglicherweise nicht mit den Statuscodes in den IO_STATUS_BLOCK Strukturen übereinstimmen. Wenn eine dieser Routinen STATUS_PENDING zurückgibt, sollte der Aufrufer auf den Abschluss des E/A-Vorgangs warten und dann den Statuscode in der IO_STATUS_BLOCK Struktur überprüfen, um den endgültigen Status des Vorgangs zu ermitteln. Wenn die Routine einen anderen Statuscode als STATUS_PENDING zurückgibt, sollte der Aufrufer diesen Statuscode anstelle des Statuscodes in der IO_STATUS_BLOCK Struktur verwenden.
Weitere Informationen finden Sie unter E/A-Statusblöcke.
Anforderungen
Anforderung | Wert |
---|---|
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h) |