Подпрограмма MRxQueryVolumeInfo
Подпрограмма MRxQueryVolumeInfo вызывается RDBSS для запроса сведений о томе сетевого мини-перенаправителя.
Синтаксис
PMRX_CALLDOWN MRxQueryVolumeInfo;
NTSTATUS MRxQueryVolumeInfo(
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
Параметры
RxContext [in, out]
Указатель на структуру RX_CONTEXT. Этот параметр содержит IRP, запрашивающий операцию.
Возвращаемое значение
MRxQueryVolumeInfo возвращает STATUS_SUCCESS при успешном выполнении или соответствующее значение NTSTATUS, например одно из следующих значений:
Код возврата | Описание |
---|---|
STATUS_ACCESS_DENIED | Вызывающий объект не имеет надлежащей безопасности для этой операции. |
STATUS_BUFFER_OVERFLOW | Буфер для получения сведений о томе был слишком мал. Это возвращаемое значение следует считать успешным, и в элементе Info.Buffer структуры RX_CONTEXT, на которую указывает параметр RxContext , должно возвращаться как можно больше допустимых данных. |
STATUS_BUFFER_TOO_SMALL | Буфер слишком мал для получения запрошенных данных. Если это значение возвращается, элементу InformationToReturn структуры RX_CONTEXT, на которую указывает параметр RxContext , необходимо задать минимальный размер ожидаемого буфера для успешного вызова. |
STATUS_CONNECTION_DISCONNECTED | Подключение было отключено. |
STATUS_INSUFFICIENT_RESOURCES | Недостаточно ресурсов для выполнения запроса. |
STATUS_INVALID_PARAMETER | Указан недопустимый параметр. |
STATUS_NETWORK_NAME_DELETED | Сетевое имя удалено. |
STATUS_NOT_IMPLEMENTED | Запрашиваемая функция не реализована. |
Комментарии
RDBSS выполняет вызов MRxQueryVolumeInfo в любом из следующих случаев:
RDBSS получает запрос IRP_MJ_QUERY_VOLUME_INFORMATION .
RDBSS получает IRP_MJ_FILE_SYSTEM_CONTROL запрос на код элемента управления FSCTL_LMR_GET_LINK_TRACKING_INFORMATION.
Перед вызовом MRxQueryVolumeInfo в случае запроса IRP_MJ_QUERY_VOLUME_INFORMATION RDBSS изменяет следующие элементы в структуре RX_CONTEXT, на которую указывает параметр RxContext :
Член Info.FsInformationClass имеет значение IrpSp-Parameters.QueryVolume.FsInformationClass>.
Для элемента Info.Buffer задано значение Irp-AssociatedIrp.SystemBuffer>.
Для элемента Info.LengthRemaining задано значение IrpSp-Parameters.QueryVolume.Length>.
Для IRP_MJ_QUERY_VOLUME_INFORMATION запроса, если элемент PostRequest структуры RX_CONTEXT имеет значение TRUE при возврате из MRxQueryVolumeInfo, RDBSS вызовет RxFsdPostRequest для отправки запроса. В этом случае запрос IRP_MJ_QUERY_VOLUME_INFORMATION передает структуру RX_CONTEXT в очередь RX_CONTEXT в очередь рабочей роли для обработки процессом файловой системы (FSP).
Если элемент PostRequest структуры RX_CONTEXT имеет значение FALSE при возврате из MRxQueryVolumeInfo, сетевой мини-перенаправитель должен задать для элемента Info.LengthRemaining структуры RX_CONTEXT длину возвращаемых сведений о томе. RDBSS задает для элемента IoStatus.Information IRP значение IrpSp-Parameters.QueryVolume.Length> за вычетом элемента Info.LengthRemaining структуры RX_CONTEXT.
Если вызов MRxQueryVolumeInfo выполнен успешно, сетевой мини-перенаправитель должен задать элемент Info.LengthRemaining структуры RX_CONTEXT на элемент Info.Length за вычетом длины возвращаемых сведений о томе. Если вызов MRxQueryVolumeInfo был выполнен успешно, RDBSS устанавливает элемент IoStatus.Information IRP в значение IrpSp-Parameters.QueryVolume.Length> за вычетом элемента Info.LengthRemaining структуры RX_CONTEXT.
Для запроса IRP_MJ_QUERY_VOLUME_INFORMATION с элементом Info.FsInformationClass , равным FileFsDeviceInformation, сетевой мини-перенаправитель возвращает следующие сведения в структуре RX_CONTEXT, на которую указывает параметр RxContext :
Элемент Info.Buffer содержит структуру FILE_FS_DEVICE_INFORMATION
Для элемента Info.Buffer.Characteristics заданы характеристики тома, которые должны включать FILE_REMOTE_DEVICE в качестве одного из параметров.
Элементу Info.Buffer.DeviceType присваивается элемент DeviceType связанной структуры NET_ROOT. Если элемент Type связанного NET_ROOT имеет значение NET_ROOT_PIPE, то для элемента Info.Buffer.DeviceType задано значение FILE_DEVICE_NAMED_PIPE.
Для запроса IRP_MJ_QUERY_VOLUME_INFORMATION с элементом Info.FsInformationClass , равным FileFsVolumeInformation, сетевой мини-перенаправитель возвращает следующие сведения в структуре RX_CONTEXT, на которую указывает параметр RxContext :
Элемент Info.Buffer содержит FILE_FS_VOLUME_INFORMATION структуру.
Для элемента Info.Buffer устанавливается элемент VolumeInfo связанной структуры NET_ROOT.
Для элемента Info.LengthRemaining устанавливается элемент VolumeInfoLength связанной структуры NET_ROOT.
Вызов MRxQueryVolumeInfo из RDBSS для IRP_MJ_FILE_SYSTEM_CONTROL — это запрос на сведения об отслеживании ссылок. Перед вызовом MRxQueryVolumeInfo для IRP_MJ_FILE_SYSTEM_CONTROL RDBSS изменяет следующие элементы в структуре RX_CONTEXT, на которую указывает параметр RxContext :
Член Info.FsInformationClass имеет значение FileFsObjectIdInformation.
Член Info.Buffer имеет FILE_FS_OBJECTID_INFORMATION структуру.
Для элемента Info.LengthRemaining задано значение sizeof(FILE_FS_OBJECTID_INFORMATION).
Для этого запроса IRP_MJ_FILE_SYSTEM_CONTROL элемент AssociatedIrp.SystemBuffer IRP указывает на LINK_TRACKING_INFORMATION структуру.
Если запрос инициируется как IRP_MJ_FILE_SYSTEM_CONTROL в MRxQueryVolumeInfo с возвращаемым значением STATUS_SUCCESS или STATUS_BUFFER_OVERFLOW, RDBSS копирует элемент ObjectId структуры FILE_FS_OBJECTID_INFORMATION, переданный в элементе Info.Buffer структуры RX_CONTEXT, в элемент NetRoot-DiskParameters.VolumeId> структуры FCB и в элемент AssociatedIrp.SystemBuffer.VolumeId IRP. Если вызов MRxQueryVolumeInfo был выполнен успешно, RDBSS задает элемент Type структуры LINK_TRACKING_INFORMATION. Если для элемента NetRoot-Flags> структуры FCB задан бит NETROOT_FLAG_DFS_AWARE_NETROOT, для элемента Type RDBSS устанавливается значение DfsLinkTrackingInformation. Если элемент NetRoot-Flags> структуры FCB не имеет битового NETROOT_FLAG_DFS_AWARE_NETROOT, rDBSS задает для элемента Typeзначение NtfsLinkTrackingInformation. При успешном выполнении RDBSS устанавливает для элемента IoStatus.Information IRP размер LINK_TRACKING_INFORMATION структуры.
Требования
Целевая платформа |
Персональный компьютер |
Заголовок |
Mrx.h (включая Mrx.h) |