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