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, deve serNULL não se BufferSizeNeeded for NULL. Se esse parâmetro for NULL e BufferSizeNeeded não estiver NULL, FltGetVolumeName armazenará o tamanho do buffer necessário para o nome do volume solicitado no parâmetro bufferSizeNeeded do e retornará STATUS_BUFFER_TOO_SMALL. Consulte Comentários.

[out, optional] BufferSizeNeeded

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

Valor de retorno

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 comprimento.
STATUS_BUFFER_TOO_SMALL O buffer membro da estrutura UNICODE_STRING, apontado por VolumeName, é muito pequeno (conforme indicado por seu membro MaximumLength) para conter o nome inteiro do volume. Este é um código de erro.
STATUS_INVALID_PARAMETER VolumeName e BufferSizeNeeded são NULL. Este é um código de erro.

Observações

Para que essa rotina seja bem-sucedida, o buffer membro 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 de Buffer e o tamanho necessário para MaximumLength. Por exemplo: FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);

  • Aloque VolumeNameSize bytes de pool para de 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 é 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
da Plataforma de Destino Universal
cabeçalho fltkernel.h (inclua FltKernel.h)
biblioteca FltMgr.lib
de DLL Fltmgr.sys
IRQL <= APC_LEVEL

Consulte também

FilterGetDosName

FltGetVolumeFromName

fltGetVolumeGuidName

UNICODE_STRING