Freigeben über


FltGetVolumeName-Funktion (fltkernel.h)

Die FltGetVolumeName Routine ruft den Volumenamen für ein bestimmtes Volume ab.

Syntax

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

Parameter

[in] Volume

Undurchsichtiger Zeiger für das Volume. Dieser Parameter ist erforderlich und kann nicht NULL-werden.

[in, out, optional] VolumeName

Zeigen Sie auf eine vom Aufrufer zugewiesene UNICODE_STRING Struktur, die den nicht persistenten Geräteobjektnamen des Volumes enthält (z. B. "\Device\HarddiskVolume1"), wenn STATUS_SUCCESS zurückgegeben wird. Beachten Sie, dass pool für VolumeName->Buffer auch aufrufergeteilt ist.

Dieser Parameter ist optional und kann NULL-sein; Es muss jedoch nichtNULL- sein, wenn BufferSizeNeededed-NULL-ist. Wenn dieser Parameter NULL- ist und BufferSizeNeededed nicht NULL-ist, speichert FltGetVolumeName die für den angeforderten Volumenamen erforderliche Puffergröße im BufferSizeNeededed Parameter und gibt STATUS_BUFFER_TOO_SMALL zurück. Siehe Anmerkungen.

[out, optional] BufferSizeNeeded

Zeigen Sie auf eine vom Aufrufer zugewiesene Variable, die die Größe des angeforderten Volumenamens in Byte empfängt. Dieser Parameter ist optional und kann NULL-sein; Es muss jedoch nichtNULL- sein, wenn VolumeName-NULL- ist, damit FltGetVolumeName die für den angeforderten Volumenamen erforderliche Puffergröße speichern kann.

Rückgabewert

FltGetVolumeName gibt einen der folgenden NTSTATUS-Werte zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS Die UNICODE_STRING Struktur, auf die VolumeNameverweist, enthält den Namen des Volumes im Buffer Member für die Struktur und die Länge des Namens in Byte im element Length Member.
STATUS_BUFFER_TOO_SMALL Das Buffer--Element der UNICODE_STRING-Struktur, auf das durch VolumeName-verwiesen wird, ist zu klein (wie durch das MaximumLength Member angegeben), um den gesamten Volumenamen zu enthalten. Dies ist ein Fehlercode.
STATUS_INVALID_PARAMETER VolumeName und BufferSizeNeed sind beide NULL-. Dies ist ein Fehlercode.

Bemerkungen

Damit diese Routine erfolgreich ausgeführt werden kann, muss das Buffer Member der UNICODE_STRING-Struktur (auf VolumeName-) groß genug sein, wie durch das MaximumLength Member angegeben, um die gesamte Volumenamenzeichenfolge zu enthalten.

Der folgende Pseudocode zeigt eine mögliche Methode zum erfolgreichen Abrufen eines Volumenamens, wenn BufferSizeNeededed unbekannt ist:

  • Rufen Sie FltGetVolumeName auf, um den erforderlichen Pool für Puffer- und die erforderliche Größe für MaximumLength-zu ermitteln. Beispiel: FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);

  • Weisen Sie VolumeNameSize Bytes des Pools für Puffer- zu, und legen Sie MaximumLength- auf VolumeNameSizefest.

  • Rufen Sie FltGetVolumeName erneut auf, um den Volumenamen abzurufen. Beispiel: FltGetVolumeName(VolumePtr, &VolumeNameStruct, NULL);

VolumeNameStruct.Buffer enthält die Unicode-Volumenamenzeichenfolge, die VolumeNameStruct.Length Bytes lang ist.

Rufen Sie FltGetVolumeGuidNameauf, um den Volume-GUID-Namen für ein bestimmtes Volume abzurufen.

Rufen Sie FltGetVolumeFromNameauf, um einen undurchsichtigen Volumezeiger für ein Volume mit einem bestimmten Namen abzurufen.

Weitere Informationen zum Benennen eines Volumes finden Sie unter Unterstützen von Mount Manager-Anforderungen in einem Storage Class Driver**.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- fltkernel.h (include FltKernel.h)
Library FltMgr.lib
DLL- Fltmgr.sys
IRQL- <= APC_LEVEL

Siehe auch

FilterGetDosName-

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING