IOCTL_MOUNTMGR_QUERY_POINTS IOCTL (mountmgr.h)

Este IOCTL retorna triplos que consistem em um nome de link simbólico persistente para o volume (ou seja, um ponto de montagem), uma ID exclusiva para o volume e um nome de dispositivo não persistente (como "\Device\HarddiskVolume1") para o volume. A entrada para esse IOCTL é uma estrutura MOUNTMGR_MOUNT_POINT que contém um único triplo.

Se a entrada tripla contiver uma ID exclusiva ou um nome de dispositivo não persistente, a solicitação recuperará todos os pontos de montagem associados (links simbólicos), incluindo o nome do caminho guid do volume e as letras da unidade. No entanto, se a entrada tripla tiver um link simbólico, mas não especificar a ID exclusiva ou o nome do dispositivo, a solicitação retornará apenas um único triplo que contenha o link simbólico fornecido na entrada, juntamente com a ID exclusiva e o nome do dispositivo. O chamador deve enviar outro IOCTL com a ID exclusiva ou o nome do dispositivo para recuperar os pontos de montagem restantes.

Se a entrada tripla estiver vazia, o gerenciador de montagem retornará toda a lista de dispositivos montados.

O gerenciador de montagem retorna triplos que correspondem à quantidade de informações fornecidas pelo chamador. Se o chamador enviar a ID exclusiva, o gerenciador de montagem retornará todos os triplos com essa ID exclusiva. Se o chamador inserir o nome do caminho do volume ou uma letra da unidade como o nome do link simbólico, o gerenciador de montagem retornará apenas o triplo para o link simbólico. Há uma entrada por link simbólico. Se o chamador inserir um nome de caminho do dispositivo, o gerenciador de montagem retornará apenas os triplos para esse nome de caminho do dispositivo. Se o chamador inserir uma ID exclusiva e um link simbólico, novamente, o gerenciador de montagem retornará apenas uma entrada para esse link simbólico. Um chamador faria isso para obter o nome do caminho do dispositivo. Se o chamador não inserir nenhum nome de caminho do dispositivo, ID exclusiva ou link simbólico, o gerenciador de montagem retornará todas as entradas/triplos.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

O cliente do gerenciador de montagem inicializa a estrutura MOUNTMGR_MOUNT_POINT, definida em Mountmgr.h, no início do buffer em Irp-AssociatedIrp.SystemBuffer>. Imediatamente após essa estrutura, o cliente MM carrega o nome do link simbólico, a ID exclusiva e o nome do dispositivo, nessa ordem.

Comprimento do buffer de entrada

Parameters.DeviceIoControl.InputBufferLength no local da pilha de E/S do IRP indica o tamanho, em bytes, do buffer de entrada, que deve ser maior ou igual a sizeof(MOUNTMGR_MOUNT_POINT).

Buffer de saída

O gerenciador de montagem inicializa uma estrutura de comprimento variável do tipo MOUNTMGR_MOUNT_POINTS, definida em Mountmgr.h, no início do buffer em Irp-AssociatedIrp.SystemBuffer>. O gerenciador de montagem insere os pontos de montagem, associados ao volume indicado, no endereço apontado pelo membro MountPoints[] dessa estrutura. Cada ponto de montagem é representado por uma estrutura MOUNTMGR_MOUNT_POINT conforme definido na seção Entrada para este IOCTL.

Bloco de status

Se a operação for bem-sucedida, o campo Status será definido como STATUS_SUCCESS.

Se nem a ID exclusiva nem o nome do dispositivo não persistente forem encontrados na lista de dispositivos montados em volumes, o campo Status será definido como STATUS_INVALID_PARAMETER.

Se InputBufferLength for menor que sizeof(MOUNTMGR_MOUNT_POINT), o campo Status será definido como STATUS_INVALID_PARAMETER.

Se InputBufferLength for menor que o comprimento total das três cadeias de caracteres de ID de entrada, o campo Status será definido como STATUS_INVALID_PARAMETER.

Se OutputBufferLength for menor que sizeof(MOUNTMGR_MOUNT_POINT), o campo Status será definido como STATUS_INVALID_PARAMETER.

Se OutputBufferLength for menor que sizeof(MOUNTMGR_MOUNT_POINTS) mais a soma dos tamanhos do ponto de montagem triplicar, o campo Status será definido como STATUS_BUFFER_OVERFLOW.

Se qualquer uma das três cadeias de caracteres contidas em qualquer um dos triplos estiver alinhada em um endereço ímpar (por exemplo, endereço & 01 != 0), o campo Status será definido como STATUS_INVALID_PARAMETER.

Requisitos

Requisito Valor
Cabeçalho mountmgr.h (inclua Mountmgr.h)

Confira também

MOUNTMGR_MOUNT_POINTS