Rotina MRxQueryVolumeInfo
A rotina MRxQueryVolumeInfo é chamada pelo RDBSS para solicitar que um minidiretório de rede consulte informações de volume.
Sintaxe
PMRX_CALLDOWN MRxQueryVolumeInfo;
NTSTATUS MRxQueryVolumeInfo(
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
Parâmetros
RxContext [in, out]
Um ponteiro para a estrutura RX_CONTEXT. Esse parâmetro contém o IRP que está solicitando a operação.
Retornar valor
MRxQueryVolumeInfo retorna STATUS_SUCCESS com êxito ou um valor NTSTATUS apropriado, como um dos seguintes:
Código de retorno | Descrição |
---|---|
STATUS_ACCESS_DENIED | O chamador não tinha a segurança adequada para esta operação. |
STATUS_BUFFER_OVERFLOW | O buffer para receber as informações de volume era muito pequeno. Esse valor retornado deve ser considerado êxito e o máximo de dados válidos possível deve ser retornado no membro Info.Buffer da estrutura RX_CONTEXT apontada pelo parâmetro RxContext . |
STATUS_BUFFER_TOO_SMALL | O buffer é muito pequeno para receber os dados solicitados. Se esse valor for retornado, o membro InformationToReturn da estrutura RX_CONTEXT apontada pelo parâmetro RxContext deverá ser definido como o tamanho mínimo do buffer esperado para que a chamada seja bem-sucedida. |
STATUS_CONNECTION_DISCONNECTED | A conexão foi desconectada. |
STATUS_INSUFFICIENT_RESOURCES | Não havia recursos suficientes para concluir a consulta. |
STATUS_INVALID_PARAMETER | Um parâmetro inválido foi especificado. |
STATUS_NETWORK_NAME_DELETED | Um nome de rede foi excluído. |
STATUS_NOT_IMPLEMENTED | Um recurso solicitado não é implementado. |
Comentários
O RDBSS emite uma chamada para MRxQueryVolumeInfo em um dos seguintes casos:
O RDBSS recebe uma solicitação de IRP_MJ_QUERY_VOLUME_INFORMATION .
O RDBSS recebe uma solicitação de IRP_MJ_FILE_SYSTEM_CONTROL para um código de controle FSCTL_LMR_GET_LINK_TRACKING_INFORMATION.
Antes de chamar MRxQueryVolumeInfo no caso de uma solicitação de IRP_MJ_QUERY_VOLUME_INFORMATION, o RDBSS modifica os seguintes membros na estrutura RX_CONTEXT apontada pelo parâmetro RxContext :
O membro Info.FsInformationClass é definido como IrpSp-Parameters.QueryVolume.FsInformationClass>.
O membro Info.Buffer é definido como Irp-AssociatedIrp.SystemBuffer>.
O membro Info.LengthRemaining é definido como IrpSp-Parameters.QueryVolume.Length>.
Para uma solicitação IRP_MJ_QUERY_VOLUME_INFORMATION, se o membro PostRequest da estrutura RX_CONTEXT for TRUE no retorno de MRxQueryVolumeInfo, o RDBSS chamará RxFsdPostRequest para postar a solicitação. Nesse caso, a solicitação de IRP_MJ_QUERY_VOLUME_INFORMATION passará a estrutura RX_CONTEXT para a fila RX_CONTEXT para uma fila de trabalho para processamento pelo FSP (processo do sistema de arquivos).
Se o membro PostRequest da estrutura RX_CONTEXT for FALSE no retorno de MRxQueryVolumeInfo, o minidiretório de rede deverá definir o membro Info.LengthRemaining da estrutura RX_CONTEXT para o comprimento das informações de volume retornadas. O RDBSS define o membro IoStatus.Information do IRP como IrpSp-Parameters.QueryVolume.Length> menos o membro Info.LengthRemaining da estrutura RX_CONTEXT.
Se a chamada para MRxQueryVolumeInfo for bem-sucedida, o minidiretório de rede deverá definir o membro Info.LengthRemaining da estrutura RX_CONTEXT para o membro Info.Length menos o comprimento das informações de volume retornadas. Se a chamada para MRxQueryVolumeInfo tiver sido bem-sucedida, o RDBSS definirá o membro IoStatus.Information do IRP como IrpSp-Parameters.QueryVolume.Length> menos o membro Info.LengthRemaining da estrutura RX_CONTEXT.
Para uma solicitação de IRP_MJ_QUERY_VOLUME_INFORMATION com o membro Info.FsInformationClass definido como FileFsDeviceInformation, o minidiretório de rede retorna as seguintes informações na estrutura RX_CONTEXT apontada pelo parâmetro RxContext :
O membro Info.Buffer contém uma estrutura FILE_FS_DEVICE_INFORMATION
O membro Info.Buffer.Characteristics é definido como as características do volume, que devem incluir FILE_REMOTE_DEVICE como uma das opções.
O membro Info.Buffer.DeviceType é definido como o membro DeviceType da estrutura NET_ROOT associada. Se o membro Type do NET_ROOT associado for NET_ROOT_PIPE, o membro Info.Buffer.DeviceType será definido como FILE_DEVICE_NAMED_PIPE.
Para uma solicitação IRP_MJ_QUERY_VOLUME_INFORMATION com o membro Info.FsInformationClass definido como FileFsVolumeInformation, o minidiretório de rede retorna as seguintes informações na estrutura RX_CONTEXT apontada pelo parâmetro RxContext :
O membro Info.Buffer contém uma estrutura FILE_FS_VOLUME_INFORMATION.
O membro Info.Buffer é definido como o membro VolumeInfo da estrutura de NET_ROOT associada.
O membro Info.LengthRemaining é definido como o membro VolumeInfoLength da estrutura de NET_ROOT associada.
Uma chamada MRxQueryVolumeInfo do RDBSS para IRP_MJ_FILE_SYSTEM_CONTROL é uma solicitação para as informações de acompanhamento de link. Antes de chamar MRxQueryVolumeInfo para IRP_MJ_FILE_SYSTEM_CONTROL, o RDBSS modifica os seguintes membros na estrutura RX_CONTEXT apontada pelo parâmetro RxContext :
O membro Info.FsInformationClass é definido como FileFsObjectIdInformation.
O membro Info.Buffer é definido como uma estrutura FILE_FS_OBJECTID_INFORMATION.
O membro Info.LengthRemaining é definido como sizeof(FILE_FS_OBJECTID_INFORMATION).
Para esse caso de uma solicitação de IRP_MJ_FILE_SYSTEM_CONTROL, o membro AssociatedIrp.SystemBuffer do IRP aponta para uma estrutura de LINK_TRACKING_INFORMATION.
Se uma solicitação for iniciada como uma IRP_MJ_FILE_SYSTEM_CONTROL para MRxQueryVolumeInfo com um valor retornado de STATUS_SUCCESS ou STATUS_BUFFER_OVERFLOW, o RDBSS copiará o membro ObjectId da estrutura FILE_FS_OBJECTID_INFORMATION passada no membro Info.Buffer da estrutura RX_CONTEXT para o membro NetRoot-DiskParameters.VolumeId> da estrutura FCB e para o membro AssociatedIrp.SystemBuffer.VolumeId do IRP. Se a chamada para MRxQueryVolumeInfo tiver sido bem-sucedida, o RDBSS definirá o membro Type da estrutura LINK_TRACKING_INFORMATION. Se o membro NetRoot-Flags> da estrutura FCB tiver o NETROOT_FLAG_DFS_AWARE_NETROOT bit definido, o membro Type será definido pelo RDBSS como DfsLinkTrackingInformation. Se o membro NetRoot-Flags> da estrutura FCB não tiver o NETROOT_FLAG_DFS_AWARE_NETROOT bit definido, o membro Type será definido por RDBSS como NtfsLinkTrackingInformation. Em caso de êxito, o RDBSS define o membro IoStatus.Information do IRP como o tamanho de uma estrutura de LINK_TRACKING_INFORMATION.
Requisitos
Plataforma de destino |
Área de Trabalho |
parâmetro |
Mrx.h (inclua Mrx.h) |