IOCTL_STORAGE_QUERY_PROPERTY IOCTL (ntddstor.h)
Ein Treiber kann IOCTL_STORAGE_QUERY_PROPERTY verwenden, um Eigenschaften eines Speichergeräts oder Adapters zurückzugeben. Die Anforderung gibt die Art der abzurufenden Informationen an, z. B. Untersuchungsdaten für ein Gerät oder Funktionen und Einschränkungen eines Adapters. IOCTL_STORAGE_QUERY_PROPERTY können auch verwendet werden, um zu bestimmen, ob der Porttreiber eine bestimmte Eigenschaft unterstützt oder welche Felder im Eigenschaftendeskriptor mit einer nachfolgenden Änderungseigenschaftsanforderung geändert werden können.
Hauptcode
Eingabepuffer
Parameters.DeviceIoControl.InputBufferLength gibt die Größe des Parameterpuffers bei Irp->AssociatedIrp.SystemBufferan, die >= Sizeof(STORAGE_PROPERTY_QUERY) sein muss.
Irp->AssociatedIrp.SystemBuffer enthält STORAGE_PROPERTY_QUERY Daten, die angeben, ob das Gerät oder der Adapter, der auszuführende Abfragetyp und alle zusätzlichen Parameter angegeben werden sollen, die für die Abfrage erforderlich sind, z. B. den Seitencode für eine bestimmte SCSI-Modus-Sinnesseite. Geräteeigenschaften müssen nur von einem Gerät abgerufen werden; Wenn Sie versuchen, Geräteeigenschaften von einem Adapter abzurufen, tritt ein Fehler auf.
Parameters.DeviceIoControl.OutputBufferLength gibt die Anzahl der Bytes an, die in Irp->AssociatedIrp.SystemBuffergeschrieben werden können. OutputBufferLength- kann null sein, um zu bestimmen, ob eine Eigenschaft vorhanden ist, ohne die Daten abzurufen.
Eingabepufferlänge
Parameters.DeviceIoControl.InputBufferLength gibt die Größe des Parameterpuffers bei Irp->AssociatedIrp.SystemBufferan, die >= Sizeof(STORAGE_PROPERTY_QUERY) sein muss.
Ausgabepuffer
Der Treiber gibt Abfragedaten an den Puffer bei Irp->AssociatedIrp.SystemBufferzurück. An die Struktur können unterschiedliche Mengen busspezifischer Daten angefügt werden.
Länge des Ausgabepuffers
Wandeln Sie die Struktur in eine STORAGE_DESCRIPTOR_HEADER zurück, und überprüfen Sie die Größe Element, um die Anzahl der Bytes zu bestimmen, die die Struktur tatsächlich benötigt.
Statusblock
Das Feld Information wird auf die Anzahl der zurückgegebenen Bytes festgelegt. Das Feld Status wird auf STATUS_SUCCESS oder möglicherweise auf STATUS_INVALID_DEVICE_REQUEST, STATUS_INVALID_PARAMETER oder STATUS_NOT_SUPPORTED festgelegt.
Anforderungen
Anforderung | Wert |
---|---|
Header- | ntddstor.h (include Ntddstor.h) |