Compartilhar via


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:

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)

Confira também

MRxIsValidDirectory

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxSetEaInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetQuotaInfo

MRxSetSdInfo

MRxSetVolumeInfo

RxFsdPostRequest