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 enVolumeNameSize
.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 |