MRxQueryVolumeInfo-Routine

Die MRxQueryVolumeInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Volumeinformationen abfragt.

Syntax

PMRX_CALLDOWN MRxQueryVolumeInfo;

NTSTATUS MRxQueryVolumeInfo(
  _Inout_ PRX_CONTEXT RxContext
)
{ ... }

Parameter

RxContext [in, out]
Ein Zeiger auf die RX_CONTEXT-Struktur. Dieser Parameter enthält das IRP, das den Vorgang anfordert.

Rückgabewert

MRxQueryVolumeInfo gibt STATUS_SUCCESS nach Erfolg oder einen geeigneten NTSTATUS-Wert zurück, z. B. einen der folgenden:

Rückgabecode Beschreibung
STATUS_ACCESS_DENIED

Dem Aufrufer fehlte die richtige Sicherheit für diesen Vorgang.

STATUS_BUFFER_OVERFLOW

Der Puffer zum Empfangen der Volumeinformationen war zu klein.

Dieser Rückgabewert sollte als erfolgreich betrachtet werden, und im Info.Buffer-Element der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist, sollten so viele gültige Daten wie möglich zurückgegeben werden.

STATUS_BUFFER_TOO_SMALL

Der Puffer ist zu klein, um die angeforderten Daten zu empfangen.

Wenn dieser Wert zurückgegeben wird, sollte das InformationToReturn-Element der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist, auf die Mindestgröße des erwarteten Puffers festgelegt werden, damit der Aufruf erfolgreich ist.

STATUS_CONNECTION_DISCONNECTED

Die Verbindung wurde getrennt.

STATUS_INSUFFICIENT_RESOURCES

Es gab nicht genügend Ressourcen, um die Abfrage abzuschließen.

STATUS_INVALID_PARAMETER

Ein ungültiger Parameter wurde angegeben.

STATUS_NETWORK_NAME_DELETED

Ein Netzwerkname wurde gelöscht.

STATUS_NOT_IMPLEMENTED

Ein angefordertes Feature ist nicht implementiert.

Hinweise

RDBSS ruft MRxQueryVolumeInfo in einem der folgenden Fälle auf:

Bevor MRxQueryVolumeInfo im Fall einer IRP_MJ_QUERY_VOLUME_INFORMATION-Anforderung aufgerufen wird, ändert RDBSS die folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist:

Das Info.FsInformationClass-Element ist auf IrpSp-Parameters.QueryVolume.FsInformationClass> festgelegt.

Der Info.Buffer-Member ist auf Irp-AssociatedIrp.SystemBuffer> festgelegt.

Der Info.LengthRemaining-Member ist auf IrpSp-Parameters.QueryVolume.Length> festgelegt.

Wenn für eine IRP_MJ_QUERY_VOLUME_INFORMATION-Anforderung das PostRequest-Element der RX_CONTEXT-Struktur bei Rückgabe von MRxQueryVolumeInfoTRUE ist, ruft RDBSS RxFsdPostRequest auf, um die Anforderung zu posten. In diesem Fall übergibt die IRP_MJ_QUERY_VOLUME_INFORMATION-Anforderung die RX_CONTEXT-Struktur, um RX_CONTEXT an eine Workerwarteschlange zur Verarbeitung durch den Dateisystemprozess (File System Process, FSP) in die Warteschlange zu stellen.

Wenn das PostRequest-Element der RX_CONTEXT-Struktur bei der Rückgabe von MRxQueryVolumeInfofalse ist, muss der Netzwerkminiumleitungs-Member info.LengthRemaining der RX_CONTEXT-Struktur auf die Länge der zurückgegebenen Volumeinformationen festlegen. RDBSS legt den IoStatus.Information-Member des IRP auf IrpSp-Parameters.QueryVolume.Length> abzüglich des Info.LengthRemaining-Elements der RX_CONTEXT-Struktur fest.

Wenn der Aufruf von MRxQueryVolumeInfo erfolgreich ist, sollte der Netzwerk-Miniumor den Info.LengthRemaining-Member der RX_CONTEXT-Struktur auf den Info.Length-Member abzüglich der Länge der zurückgegebenen Volumeinformationen festlegen. Wenn der Aufruf von MRxQueryVolumeInfo erfolgreich war, legt RDBSS den IoStatus.Information-Member des IRP auf IrpSp-Parameters.QueryVolume.Length> abzüglich des Info.LengthRemaining-Elements der RX_CONTEXT-Struktur fest.

Bei einer IRP_MJ_QUERY_VOLUME_INFORMATION Anforderung, bei der das Info.FsInformationClass-Element auf FileFsDeviceInformation festgelegt ist, gibt der Netzwerkminiumleitungsor die folgenden Informationen in der RX_CONTEXT-Struktur zurück, auf die der RxContext-Parameter verweist:

Das Info.Buffer-Element enthält eine FILE_FS_DEVICE_INFORMATION-Struktur.

Der Info.Buffer.Characteristics-Member ist auf die Merkmale des Volumes festgelegt, das FILE_REMOTE_DEVICE als eine der Optionen enthalten muss.

Das Info.Buffer.DeviceType-Element wird auf das DeviceType-Element der zugeordneten NET_ROOT-Struktur festgelegt. Wenn das Type-Element des zugeordneten NET_ROOT NET_ROOT_PIPE ist, wird das Info.Buffer.DeviceType-Element auf FILE_DEVICE_NAMED_PIPE festgelegt.

Bei einer IRP_MJ_QUERY_VOLUME_INFORMATION Anforderung, bei der das Info.FsInformationClass-Element auf FileFsVolumeInformation festgelegt ist, gibt der Netzwerkminiumor die folgenden Informationen in der RX_CONTEXT-Struktur zurück, auf die der RxContext-Parameter verweist:

Das Info.Buffer-Element enthält eine FILE_FS_VOLUME_INFORMATION-Struktur.

Das Info.Buffer-Element wird auf das VolumeInfo-Element der zugeordneten NET_ROOT-Struktur festgelegt.

Das Info.LengthRemaining-Element wird auf das VolumeInfoLength-Element der zugeordneten NET_ROOT-Struktur festgelegt.

Ein MRxQueryVolumeInfo-Aufruf von RDBSS für IRP_MJ_FILE_SYSTEM_CONTROL ist eine Anforderung für die Linknachverfolgungsinformationen. Bevor MRxQueryVolumeInfo für IRP_MJ_FILE_SYSTEM_CONTROL aufgerufen wird, ändert RDBSS die folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist:

Das Info.FsInformationClass-Element ist auf FileFsObjectIdInformation festgelegt.

Das Info.Buffer-Element wird auf eine FILE_FS_OBJECTID_INFORMATION-Struktur festgelegt.

Das Info.LengthRemaining-Element ist auf sizeof(FILE_FS_OBJECTID_INFORMATION) festgelegt.

In diesem Fall einer IRP_MJ_FILE_SYSTEM_CONTROL-Anforderung verweist der AssociatedIrp.SystemBuffer-Member des IRP auf eine LINK_TRACKING_INFORMATION-Struktur.

Wenn eine Anforderung als IRP_MJ_FILE_SYSTEM_CONTROL an MRxQueryVolumeInfo mit dem Rückgabewert STATUS_SUCCESS oder STATUS_BUFFER_OVERFLOW initiiert wird, kopiert RDBSS den ObjectId-Member der FILE_FS_OBJECTID_INFORMATION-Struktur, die im Info.Buffer-Element der RX_CONTEXT-Struktur übergeben wird, an das NetRoot-DiskParameters.VolumeId-Element der FCB-Struktur> und in das AssociatedIrp.SystemBuffer.VolumeId-Element des IRP. Wenn der Aufruf von MRxQueryVolumeInfo erfolgreich war, legt RDBSS den Type-Member der LINK_TRACKING_INFORMATION-Struktur fest. Wenn für das NetRoot-Flags-Element der FCB-Struktur> das NETROOT_FLAG_DFS_AWARE_NETROOT Bit festgelegt ist, wird das Type-Element von RDBSS auf DfsLinkTrackingInformation festgelegt. Wenn für das NetRoot-Flags-Member der FCB-Struktur> nicht das NETROOT_FLAG_DFS_AWARE_NETROOT Bit festgelegt ist, wird das Type-Element von RDBSS auf NtfsLinkTrackingInformation festgelegt. Bei Erfolg legt RDBSS den IoStatus.Information-Member des IRP auf die Größe einer LINK_TRACKING_INFORMATION-Struktur fest.

Anforderungen

Zielplattform

Desktop

Header

Mrx.h (einschließlich Mrx.h)

Weitere Informationen

MRxIsValidDirectory

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxSetEaInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetQuotaInfo

MRxSetSdInfo

MRxSetVolumeInfo

RxFsdPostRequest