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 darf nicht NULL sein.

[in, out, optional] VolumeName

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

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

[out, optional] BufferSizeNeeded

Zeiger auf eine vom Aufrufer zugewiesene Variable, die die Größe des angeforderten Volumenamens in Bytes empfängt. Dieser Parameter ist optional und kann NULL sein. Es muss jedoch nicht NULL sein, wenn VolumeNameNULL 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 von VolumeName verwiesen wird, enthält den Namen des Volumes im Buffer-Member für die Struktur und die Länge des Namens in Bytes im Length-Element .
STATUS_BUFFER_TOO_SMALL Der Buffer-Member der UNICODE_STRING-Struktur, auf den volumeName verweist, ist zu klein (wie im MaximumLength-Element angegeben), um den gesamten Volumenamen zu enthalten. Dies ist ein Fehlercode.
STATUS_INVALID_PARAMETER VolumeName und BufferSizeNeeded sind beide NULL. Dies ist ein Fehlercode.

Hinweise

Damit diese Routine erfolgreich ist, muss der Buffer-Member der UNICODE_STRING-Struktur (auf die durch VolumeName verwiesen wird) groß genug sein, wie durch den MaximumLength-Member angegeben, um die gesamte Volumenamenzeichenfolge zu enthalten.

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

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

  • Weisen Sie VolumeNameSize Bytes des Pools für Buffer zu, und legen Sie MaximumLength auf fest VolumeNameSize.

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

VolumeNameStruct.Buffer enthält die Unicode-Volumenamenszeichenfolge, die byte lang ist VolumeNameStruct.Length .

Um den Namen der Volume-GUID für ein bestimmtes Volume abzurufen, rufen Sie FltGetVolumeGuidName auf.

Um einen undurchsichtigen Volumezeiger für ein Volume mit einem bestimmten Namen abzurufen, rufen Sie FltGetVolumeFromName auf.

Weitere Informationen zum Benennen eines Volumes finden Sie unter Unterstützen von Einbindungs-Manager-Anforderungen in einem Speicherklassentreiber**.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header fltkernel.h (fltKernel.h einschließen)
Bibliothek FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Weitere Informationen

FilterGetDosName

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING