Compartir a través de


Función FltGetVolumeName (fltkernel.h)

La rutina FltGetVolumeName obtiene el nombre del volumen de un volumen determinado.

Sintaxis

NTSTATUS FLTAPI FltGetVolumeName(
  [in]                PFLT_VOLUME     Volume,
  [in, out, optional] PUNICODE_STRING VolumeName,
  [out, optional]     PULONG          BufferSizeNeeded
);

Parámetros

[in] Volume

Puntero opaco para el volumen. Este parámetro es obligatorio y no puede ser NULL.

[in, out, optional] VolumeName

Puntero a una estructura de UNICODE_STRING asignada por el autor de la llamada que contiene el nombre del objeto de dispositivo no persistente del volumen (por ejemplo, "\Device\HarddiskVolume1") cuando se devuelve STATUS_SUCCESS. Tenga en cuenta que el grupo de VolumeName-Buffer> también está asignado por el autor de la llamada.

Este parámetro es opcional y puede ser NULL; sin embargo, debe ser distinto de NULL si BufferSizeNeeded es NULL. Si este parámetro es NULL y BufferSizeNeeded no es NULL, FltGetVolumeName almacena el tamaño del búfer necesario para el nombre del volumen solicitado en el parámetro BufferSizeNeeded y devuelve STATUS_BUFFER_TOO_SMALL. Vea la sección Comentarios.

[out, optional] BufferSizeNeeded

Puntero a una variable asignada por el autor de la llamada que recibe el tamaño, en bytes, del nombre del volumen solicitado. Este parámetro es opcional y puede ser NULL; Sin embargo, debe ser distinto de NULL si VolumeName es NULL para que FltGetVolumeName pueda almacenar el tamaño del búfer necesario para el nombre del volumen solicitado.

Valor devuelto

FltGetVolumeName devuelve uno de los siguientes valores NTSTATUS:

Código devuelto Descripción
STATUS_SUCCESS La estructura UNICODE_STRING, a la que apunta VolumeName, contiene el nombre del volumen en el miembro buffer de la estructura y la longitud del nombre, en bytes, en el miembro Length .
STATUS_BUFFER_TOO_SMALL El miembro Buffer de la estructura UNICODE_STRING, al que apunta VolumeName, es demasiado pequeño (como se indica en su miembro MaximumLength ) para contener todo el nombre del volumen. Se trata de un código de error.
STATUS_INVALID_PARAMETER VolumeName y BufferSizeNeeded son NULL. Se trata de un código de error.

Comentarios

Para que esta rutina se realice correctamente, el miembro Buffer de la estructura UNICODE_STRING (a la que apunta VolumeName) debe ser lo suficientemente grande, como se indica en su miembro MaximumLength , para contener toda la cadena de nombre del volumen.

El pseudocódigo siguiente muestra un método posible para adquirir correctamente un nombre de volumen si BufferSizeNeeded es desconocido:

  • Llame a FltGetVolumeName para determinar el grupo necesario para Buffer y el tamaño necesario para MaximumLength. Por ejemplo: FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);

  • Asigne VolumeNameSize bytes de grupo para Buffer y establezca MaximumLength en VolumeNameSize.

  • Vuelva a llamar a FltGetVolumeName para adquirir el nombre del volumen. Por ejemplo: FltGetVolumeName(VolumePtr, &VolumeNameStruct, NULL);

VolumeNameStruct.Buffer contiene la cadena de nombre de volumen Unicode, que es VolumeNameStruct.Length bytes de longitud.

Para obtener el nombre del GUID de volumen de un volumen determinado, llame a FltGetVolumeGuidName.

Para obtener un puntero de volumen opaco para un volumen con un nombre determinado, llame a FltGetVolumeFromName.

Para obtener más información sobre cómo asignar un nombre a un volumen, vea Admitir solicitudes del Administrador de montaje en un controlador de clase de almacenamiento**.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya FltKernel.h)
Library FltMgr.lib
Archivo DLL Fltmgr.sys
IRQL <= APC_LEVEL

Consulte también

FilterGetDosName

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING