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:
RDBSS empfängt eine IRP_MJ_QUERY_VOLUME_INFORMATION-Anforderung .
RDBSS empfängt eine IRP_MJ_FILE_SYSTEM_CONTROL Anforderung für einen FSCTL_LMR_GET_LINK_TRACKING_INFORMATION-Steuerungscode.
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) |