Compartir a través de


IOCTL_MOUNTMGR_QUERY_POINTS IOCTL (mountmgr.h)

Este IOCTL devuelve triples que constan de un nombre de vínculo simbólico persistente para el volumen (es decir, un punto de montaje), un identificador único para el volumen y un nombre de dispositivo no persistente (por ejemplo, "\Device\HarddiskVolume1") para el volumen. La entrada de este IOCTL es una estructura de MOUNTMGR_MOUNT_POINT que contiene un único triple.

Si el triple de entrada contiene un identificador único o un nombre de dispositivo no persistente, la solicitud recupera todos los puntos de montaje asociados (vínculos simbólicos), incluido el nombre de ruta de acceso guid del volumen y las letras de unidad. Sin embargo, si el triple de entrada tiene un vínculo simbólico, pero no especifica el identificador único o el nombre del dispositivo, la solicitud solo devuelve un único triple que contiene el vínculo simbólico proporcionado en la entrada, junto con el identificador único y el nombre del dispositivo. El autor de la llamada debe enviar otro IOCTL con el identificador único o el nombre del dispositivo para recuperar los puntos de montaje restantes.

Si la entrada triple está vacía, el administrador de montaje devuelve toda la lista de dispositivos montados.

El administrador de montaje devuelve triples que coinciden con la información que proporciona el autor de la llamada. Si el autor de la llamada envía el identificador único, el administrador de montaje devuelve todos los triples con ese identificador único. Si el autor de la llamada introduce el nombre de ruta de acceso del volumen o una letra de unidad como nombre de vínculo simbólico, el administrador de montaje solo devuelve el triple para el vínculo simbólico. Hay una entrada por vínculo simbólico. Si el autor de la llamada escribe un nombre de ruta de acceso del dispositivo, el administrador de montaje solo devuelve los triples para ese nombre de ruta de acceso del dispositivo. Si el autor de la llamada introduce un identificador único y un vínculo simbólico, de nuevo, el administrador de montaje devuelve solo una entrada para ese vínculo simbólico. Un llamador lo haría para obtener el nombre de la ruta de acceso del dispositivo. Si el autor de la llamada no escribe ningún nombre de ruta de acceso del dispositivo, identificador único o vínculo simbólico, el administrador de montaje devuelve todas las entradas o triples.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

El cliente del administrador de montaje inicializa la estructura de MOUNTMGR_MOUNT_POINT al principio del búfer en Irp-AssociatedIrp.SystemBuffer>. Inmediatamente después de esta estructura, el cliente MM carga el nombre del vínculo simbólico, el identificador único y el nombre del dispositivo, en ese orden.

Longitud del búfer de entrada

Parameters.DeviceIoControl.InputBufferLength en la ubicación de la pila de E/S del IRP indica el tamaño, en bytes, del búfer de entrada, que debe ser mayor o igual que sizeof(MOUNTMGR_MOUNT_POINT).

Búfer de salida

El administrador de montaje inicializa una estructura de longitud variable de tipo MOUNTMGR_MOUNT_POINTS al principio del búfer en Irp-AssociatedIrp.SystemBuffer>. El administrador de montaje inserta los puntos de montaje, asociados al volumen indicado, en la dirección a la que apunta el miembro MountPoints[] de esta estructura. Cada punto de montaje se representa mediante una estructura de MOUNTMGR_MOUNT_POINT tal y como se define en la sección Entrada de este IOCTL.

Longitud del búfer de salida

Parameters.DeviceIoControl.OutputBufferLength en la ubicación de pila de E/S del IRP indica el tamaño, en bytes, del búfer de salida, que debe ser mayor o igual que sizeof(MOUNTMGR_MOUNT_POINTS).

Búfer de entrada y salida

N/D

Longitud del búfer de entrada y salida

N/D

Bloque de estado

Si la operación se realiza correctamente, el campo Estado se establece en STATUS_SUCCESS.

Si ni el identificador único ni el nombre del dispositivo no persistente se encuentran en la lista de dispositivos montados en volúmenes, el campo Estado se establece en STATUS_INVALID_PARAMETER.

Si InputBufferLength es menor que sizeof(MOUNTMGR_MOUNT_POINT), el campo Estado se establece en STATUS_INVALID_PARAMETER.

Si InputBufferLength es menor que la longitud total de las tres cadenas de identificador de entrada, el campo Estado se establece en STATUS_INVALID_PARAMETER.

Si OutputBufferLength es menor que sizeof(MOUNTMGR_MOUNT_POINT), el campo Estado se establece en STATUS_INVALID_PARAMETER.

Si OutputBufferLength es menor que sizeof(MOUNTMGR_MOUNT_POINTS) más la suma de los tamaños del punto de montaje triples, el campo Estado se establece en STATUS_BUFFER_OVERFLOW.

Si cualquiera de las tres cadenas contenidas en cualquiera de los triples se alinea en una dirección impar (por ejemplo, dirección & 01 != 0), el campo Estado se establece en STATUS_INVALID_PARAMETER.

Comentarios

Para obtener más información, vea Admitir solicitudes del Administrador de montaje en un controlador de clase de almacenamiento.

Requisitos

Requisito Valor
Header mountmgr.h (include Mountmgr.h)

Consulte también

MOUNTMGR_MOUNT_POINTS