Поделиться через


Функция FltGetVolumeName (fltkernel.h)

Подпрограмма fltGetVolumeName получает имя тома для заданного тома.

Синтаксис

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

Параметры

[in] Volume

Непрозрачный указатель на том. Этот параметр является обязательным и не может быть null.

[in, out, optional] VolumeName

Указатель на структуру, выделенную вызывающим объектом UNICODE_STRING, которая содержит имя объекта устройства, не сохраняемого тома (например, "\Device\HarddiskVolume1") при возврате STATUS_SUCCESS. Имейте в виду, что пул для VolumeName->буфера также выделяется вызывающим объектом.

Этот параметр является необязательным и может быть NULL; однако оно должно быть неNULL, если BufferSizeNeedededNULL. Если этот параметр имеет значение NULL и BufferSizeNeeded не NULL, FltGetVolumeName сохраняет размер буфера, необходимый для запрошенного имени тома в параметре BufferSizeNeeded и возвращает STATUS_BUFFER_TOO_SMALL. См. примечания.

[out, optional] BufferSizeNeeded

Указатель на выделенную вызывающим переменную, которая получает размер в байтах запрошенного имени тома. Этот параметр является необязательным и может быть NULL; Однако оно должно быть неnull, если имя томаNULL, чтобы FltGetVolumeName может хранить размер буфера, необходимый для запрошенного имени тома.

Возвращаемое значение

FltGetVolumeName возвращает одно из следующих значений NTSTATUS:

Возвращаемый код Описание
STATUS_SUCCESS Структура UNICODE_STRING, указываемая volumeName, содержит имя тома в элементе буфера буфера для структуры и длины имени в байтах в элементе длины.
STATUS_BUFFER_TOO_SMALL Элемент буфера структуры UNICODE_STRING, на который указывает имя тома, слишком мал (как указано в элементе MaximumLength), чтобы содержать все имя тома. Это код ошибки.
STATUS_INVALID_PARAMETER Имя тома и BufferSizeNeed являются NULL. Это код ошибки.

Замечания

Для успешного выполнения этой подпрограммы элемент буфера структуры UNICODE_STRING (на который указывает Имя тома) должен быть достаточно большим, как указано в элементе MaximumLength, чтобы содержать всю строку имени тома.

Следующий псевдокод показывает один из возможных методов успешного получения имени тома, если BufferSizeNeeded неизвестно:

  • Вызовите FltGetVolumeName, чтобы определить необходимый пул для буфера и требуемый размер MaximumLength. Например, FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);

  • Выделите VolumeNameSize байт пула для буфера и задайте MaximumLength значение VolumeNameSize.

  • Вызовите FltGetVolumeName еще раз, чтобы получить имя тома. Например, FltGetVolumeName(VolumePtr, &VolumeNameStruct, NULL);

VolumeNameStruct.Buffer содержит строку имени тома Юникода, которая имеет длину VolumeNameStruct.Length байтов.

Чтобы получить имя GUID тома для заданного тома, вызовите FltGetVolumeGuidName.

Чтобы получить непрозрачный указатель тома с заданным именем, вызовите FltGetVolumeFromName.

Дополнительные сведения о томе см. в поддержке запросов Диспетчера подключений в драйвере класса хранилища**.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка fltkernel.h (include FltKernel.h)
библиотеки FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

См. также

FilterGetDosName

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING