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- aufVolumeNameSize
fest.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 |