Compartilhar via


Função FltGetVolumeName (fltkernel.h)

A rotina FltGetVolumeName obtém o nome do volume de um determinado volume.

Sintaxe

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

Parâmetros

[in] Volume

Ponteiro opaco para o volume. Esse parâmetro é necessário e não pode ser NULL.

[in, out, optional] VolumeName

Ponteiro para uma estrutura de UNICODE_STRING alocada pelo chamador que contém o nome do objeto de dispositivo não persistente do volume (por exemplo, "\Device\HarddiskVolume1") quando STATUS_SUCCESS é retornado. Lembre-se de que o pool para VolumeName-Buffer> também é alocado pelo chamador.

Esse parâmetro é opcional e pode ser NULL; no entanto, ele deverá ser não NULL se BufferSizeNeeded for NULL. Se esse parâmetro for NULL e BufferSizeNeeded não for NULL, FltGetVolumeName armazenará o tamanho do buffer necessário para o nome do volume solicitado no parâmetro BufferSizeNeeded e retornará STATUS_BUFFER_TOO_SMALL. Consulte Observações.

[out, optional] BufferSizeNeeded

Ponteiro para uma variável alocada pelo chamador que recebe o tamanho, em bytes, do nome do volume solicitado. Esse parâmetro é opcional e pode ser NULL; no entanto, ele deverá ser não NULL se VolumeName for NULL para que FltGetVolumeName possa armazenar o tamanho do buffer necessário para o nome do volume solicitado.

Retornar valor

FltGetVolumeName retorna um dos seguintes valores NTSTATUS:

Código de retorno Descrição
STATUS_SUCCESS A estrutura UNICODE_STRING, apontada por VolumeName, contém o nome do volume no membro Buffer para a estrutura e o comprimento do nome, em bytes, no membro Length .
STATUS_BUFFER_TOO_SMALL O membro Buffer da estrutura UNICODE_STRING, apontado por VolumeName, é muito pequeno (conforme indicado por seu membro MaximumLength ) para conter todo o nome do volume. Este é um código de erro.
STATUS_INVALID_PARAMETER VolumeName e BufferSizeNeeded são NULL. Este é um código de erro.

Comentários

Para que essa rotina seja bem-sucedida, o membro Buffer da estrutura UNICODE_STRING (apontado por VolumeName) deve ser grande o suficiente, conforme indicado por seu membro MaximumLength , para conter toda a cadeia de caracteres de nome do volume.

O pseudocódigo a seguir mostra um método possível para adquirir com êxito um nome de volume se BufferSizeNeeded for desconhecido:

  • Chame FltGetVolumeName para determinar o pool necessário para Buffer e o tamanho necessário para MaximumLength. Por exemplo: FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);

  • VolumeNameSize Aloque bytes de pool para Buffer e defina MaximumLength como VolumeNameSize.

  • Chame FltGetVolumeName novamente para adquirir o nome do volume. Por exemplo: FltGetVolumeName(VolumePtr, &VolumeNameStruct, NULL);

VolumeNameStruct.Buffer contém a cadeia de caracteres de nome de volume Unicode, que tem VolumeNameStruct.Length bytes de comprimento.

Para obter o nome GUID do volume de um determinado volume, chame FltGetVolumeGuidName.

Para obter um ponteiro de volume opaco para um volume com um determinado nome, chame FltGetVolumeFromName.

Para obter mais informações sobre como nomear um volume, consulte Suporte a solicitações do Mount Manager em um Driver de Classe de Armazenamento**.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua FltKernel.h)
Biblioteca FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Confira também

FilterGetDosName

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING