Compartilhar via


IRP_MJ_QUERY_VOLUME_INFORMATION (FS e drivers de filtro)

Quando enviado

O Gerenciador de E/S envia a solicitação de IRP_MJ_QUERY_VOLUME_INFORMATION . Ele pode ser enviado, por exemplo, quando um aplicativo de modo de usuário chama uma função Win32, como GetDiskFreeSpace ou GetFileType.

Operação: Drivers do sistema de arquivos

O driver do sistema de arquivos deve extrair e decodificar o objeto de arquivo para determinar se o objeto de dispositivo de destino é o objeto do dispositivo de controle do sistema de arquivos. Se for e se a solicitação tiver sido emitida em um identificador que seja um volume aberto (ou uma abertura de um objeto no volume), o driver do sistema de arquivos deverá processar a solicitação e concluir o IRP.

Caso contrário, o driver do sistema de arquivos deverá falhar na consulta e concluir o IRP.

Os tipos de informações de volume que podem ser consultados dependem do sistema de arquivos, mas geralmente incluem os seguintes valores:

  • FileFsAttributeInformation
  • FileFsDeviceInformation
  • FileFsSizeInformation
  • FileFsVolumeInformation

Para obter uma lista de todos os tipos de informações possíveis, consulte IrpSp-Parameters.QueryVolume.FsInformationClass>.

Operação: Drivers de Redirecionamento de Rede

Um redirecionador de rede que recebe uma solicitação de FileFsDeviceInformation deve incluir FILE_REMOTE_DEVICE como uma das opções para o membro DeviceCharacteristics da estrutura FILE_FS_DEVICE_INFORMATION retornada.

Operação: Drivers de filtro do sistema de arquivos herdado

O driver de filtro deve passar esse IRP para o driver mais baixo na pilha.

Parâmetros

Um sistema de arquivos ou driver de filtro chama IoGetCurrentIrpStackLocation para o IRP fornecido para obter um ponteiro para seu próprio local de pilha no IRP. Nos parâmetros a seguir, Irp aponta para o IRP e IrpSp aponta para o IO_STACK_LOCATION. O driver pode usar as informações definidas nos seguintes membros do IRP e no local da pilha IRP para processar uma solicitação de informações de volume de consulta:

  • DeviceObject é um ponteiro para o objeto de dispositivo de destino.

  • Irp->AssociatedIrp.SystemBuffer aponta para um buffer de saída fornecido pelo sistema em que as informações de volume devem ser retornadas. Essas informações são armazenadas em uma das seguintes estruturas:

    • FILE_FS_ATTRIBUTE_INFORMATION
    • FILE_FS_CONTROL_INFORMATION
    • FILE_FS_DEVICE_INFORMATION
    • FILE_FS_DRIVER_PATH_INFORMATION
    • FILE_FS_FULL_SIZE_INFORMATION
    • FILE_FS_OBJECTID_INFORMATION
    • FILE_FS_SIZE_INFORMATION
    • FILE_FS_VOLUME_FLAGS_INFORMATION
    • FILE_FS_VOLUME_INFORMATION
    • FILE_FS_SECTOR_SIZE_INFORMATION

    A classe FileFsVolumeFlagsInformation e a estrutura FILE_FS_VOLUME_INFORMATION associada estão disponíveis no Windows Vista e versões posteriores.

  • Irp->O IoStatus aponta para uma estrutura de IO_STATUS_BLOCK que recebe o status de conclusão final e informações sobre a operação solicitada.

  • Irp->UserBuffer é um ponteiro opcional para um buffer de saída fornecido pelo chamador no qual o conteúdo de Irp-AssociatedIrp.SystemBuffer> é copiado durante a conclusão de E/S pelo gerente de E/S. Os drivers não usam esse buffer para retornar dados para a solicitação.

  • IrpSp->FileObject aponta para o objeto de arquivo associado a DeviceObject.

    O parâmetroIrpSp-FileObject> contém um ponteiro para o campo RelatedFileObject, que também é uma estrutura FILE_OBJECT. O campo RelatedFileObject da estrutura FILE_OBJECT não é válido durante o processamento de IRP_MJ_QUERY_VOLUME_INFORMATION e não deve ser usado.

  • IrpSp->MajorFunction está definido como IRP_MJ_QUERY_VOLUME_INFORMATION.

  • IrpSp->Parameters.QueryVolume.FsInformationClass é o tipo de informações de volume a serem retornadas pelo sistema de arquivos. Esse membro pode ser um dos valores a seguir.

Valor Significado
FileFsAttributeInformation Retornar uma estrutura FILE_FS_ATTRIBUTE_INFORMATION que contém informações de atributo sobre o sistema de arquivos responsável pelo volume.
FileFsControlInformation Retornar uma estrutura FILE_FS_CONTROL_INFORMATION que contém informações de controle do sistema de arquivos sobre o volume.
FileFsDeviceInformation Retornar uma estrutura FILE_FS_DEVICE_INFORMATION que contém informações do dispositivo para o volume.
FileFsDriverPathInformation Retornar uma estrutura de FILE_FS_DRIVER_PATH_INFORMATION que contém informações sobre se um driver especificado está no caminho de E/S para o volume. O originador da solicitação de IRP_MJ_QUERY_VOLUME_INFORMATION deve armazenar o nome do driver na estrutura FILE_FS_DRIVER_PATH_INFORMATION antes de enviar o IRP para a pilha de dispositivos de volume do sistema de arquivos.
FileFsFullSizeInformation Retornar uma estrutura de FILE_FS_FULL_SIZE_INFORMATION que contém informações sobre a quantidade total de espaço disponível no volume.
FileFsObjectIdInformation Retornar uma estrutura FILE_FS_OBJECTID_INFORMATION que contém informações de ID de objeto específicas do sistema de arquivos para o volume. Essas informações de ID de objeto não são iguais ao nome de volume exclusivo (baseado em GUID) atribuído pelo sistema operacional.
FileFsSizeInformation Retornar uma estrutura de FILE_FS_SIZE_INFORMATION que contém informações sobre a quantidade de espaço no volume que está disponível para o usuário associado ao thread que originou a solicitação de IRP_MJ_QUERY_VOLUME_INFORMATION .
FileFsVolumeInformation Retornar um FILE_FS_VOLUME_INFORMATION que contém informações sobre o volume, como o rótulo de volume, o número de série e o tempo de criação.
FileFsSectorSizeInformation Retornar uma estrutura FILE_FS_SECTOR_SIZE_INFORMATION que contém informações sobre os tamanhos do setor físico e lógico de um volume.
  • IrpSp->Parameters.QueryVolume.Length é o comprimento, em bytes, do buffer apontado por Irp-UserBuffer>. No retorno, essa variável recebe o número de bytes gravados no buffer.

Confira também

FILE_FS_ATTRIBUTE_INFORMATION

FILE_FS_CONTROL_INFORMATION

FILE_FS_DEVICE_INFORMATION

FILE_FS_DRIVER_PATH_INFORMATION

FILE_FS_FULL_SIZE_INFORMATION

FILE_FS_OBJECTID_INFORMATION

FILE_FS_SECTOR_SIZE_INFORMATION

FILE_FS_SIZE_INFORMATION

FILE_FS_VOLUME_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_VOLUME_INFORMATION

ZwQueryVolumeInformationFile

ZwSetVolumeInformationFile