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