IRP_MJ_SET_VOLUME_INFORMATION (FS e drivers de filtro)

Quando enviado

O Gerenciador de E/S envia a solicitação de IRP_MJ_SET_VOLUME_INFORMATION. Ele pode ser enviado, por exemplo, quando um aplicativo de modo de usuário tiver chamado uma função Win32, como SetVolumeLabel.

Operação: Drivers do sistema de arquivos

O driver do sistema de arquivos deve extrair e decodificar o objeto de arquivo para determinar se ele representa um volume de usuário aberto. Se isso acontecer, o driver do sistema de arquivos deverá definir as informações de volume apropriadas e concluir o IRP. Caso contrário, o sistema de arquivos deverá concluir o IRP conforme apropriado sem definir as informações de volume.

Os tipos de informações de volume que podem ser definidas dependem do sistema de arquivos, mas geralmente incluem um ou mais dos seguintes valores:

  • FileFsControlInformation
  • FileFsLabelInformation
  • FileFsObjectIdInformation

Para obter uma lista de todos os tipos de informações possíveis, consulte a enumeração FS_INFORMATION_CLASS em ntifs.h.

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 definida:

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

  • Irp->AssociatedIrp.SystemBuffer aponta para um buffer de entrada que contém os valores das informações de volume a serem definidas. Essas informações são armazenadas em uma das seguintes estruturas:

    • FILE_FS_CONTROL_INFORMATION
    • FILE_FS_LABEL_INFORMATION
    • FILE_FS_OBJECTID_INFORMATION
  • 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.

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

    O parâmetro IrpSp-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_SET_VOLUME_INFORMATION e não deve ser usado.

  • IrpSp->MajorFunction está definido como IRP_MJ_SET_VOLUME_INFORMATION.

  • IrpSp->Parameters.SetVolume.FsInformationClass é o tipo de informação a ser definido para o volume e pode ser um dos seguintes:

    Valor Significado
    FileFsControlInformation Defina FILE_FS_CONTROL_INFORMATION para o volume.
    FileFsLabelInformation Defina FILE_FS_LABEL_INFORMATION para o volume.
    FileFsObjectIdInformation Defina FILE_FS_OBJECTID_INFORMATION para o volume.
  • IrpSp->Parameters.SetVolume.Length é o comprimento, em bytes, do buffer apontado por Irp-AssociatedIrp.SystemBuffer>.

Confira também

FILE_FS_CONTROL_INFORMATION

FILE_FS_LABEL_INFORMATION

FILE_FS_OBJECTID_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_VOLUME_INFORMATION

ZwQueryVolumeInformationFile

ZwSetVolumeInformationFile