Funzione FltGetVolumeName (fltkernel.h)

La routine FltGetVolumeName ottiene il nome del volume per un determinato volume.

Sintassi

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

Parametri

[in] Volume

Puntatore opaco per il volume. Questo parametro è obbligatorio e non può essere NULL.

[in, out, optional] VolumeName

Puntatore a una struttura UNICODE_STRING allocata dal chiamante che contiene il nome dell'oggetto dispositivo non persistente del volume ,ad esempio "\Device\HarddiskVolume1" quando viene restituito STATUS_SUCCESS. Tenere presente che anche il pool per VolumeName-Buffer> viene allocato dal chiamante.

Questo parametro è facoltativo e può essere NULL; tuttavia deve essere diverso da NULL se BufferSizeNeeded è NULL. Se questo parametro è NULL e BufferSizeNeeded non è NULL, FltGetVolumeName archivia le dimensioni del buffer necessarie per il nome del volume richiesto nel parametro BufferSizeNeeded e restituisce STATUS_BUFFER_TOO_SMALL. Vedere la sezione Osservazioni.

[out, optional] BufferSizeNeeded

Puntatore a una variabile allocata dal chiamante che riceve le dimensioni, in byte, del nome del volume richiesto. Questo parametro è facoltativo e può essere NULL; Tuttavia, deve essere diverso da NULL se VolumeName è NULL in modo che FltGetVolumeName possa archiviare le dimensioni del buffer necessarie per il nome del volume richiesto.

Valore restituito

FltGetVolumeName restituisce uno dei valori NTSTATUS seguenti:

Codice restituito Descrizione
STATUS_SUCCESS La struttura UNICODE_STRING, a cui punta VolumeName, contiene il nome del volume nel membro Buffer per la struttura e la lunghezza del nome, in byte, nel membro Length .
STATUS_BUFFER_TOO_SMALL Il membro Buffer della struttura UNICODE_STRING, a cui punta VolumeName, è troppo piccolo (come indicato dal membro MaximumLength ) per contenere l'intero nome del volume. Si tratta di un codice di errore.
STATUS_INVALID_PARAMETER VolumeName e BufferSizeNeeded sono entrambi NULL. Si tratta di un codice di errore.

Commenti

Affinché questa routine abbia esito positivo, il membro Buffer della struttura UNICODE_STRING (a cui punta VolumeName) deve essere sufficientemente grande, come indicato dal membro MaximumLength , per contenere l'intera stringa del nome del volume.

Lo pseudocodice seguente mostra un metodo possibile per acquisire correttamente un nome di volume se BufferSizeNeeded è sconosciuto :

  • Chiamare FltGetVolumeName per determinare il pool necessario per Buffer e le dimensioni necessarie per MaximumLength. ad esempio FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);

  • Allocare VolumeNameSize byte del pool per Buffer e impostare MaximumLength su VolumeNameSize.

  • Chiamare di nuovo FltGetVolumeName per acquisire il nome del volume. ad esempio FltGetVolumeName(VolumePtr, &VolumeNameStruct, NULL);

VolumeNameStruct.Buffer contiene la stringa del nome del volume Unicode, ovvero VolumeNameStruct.Length byte di lunghezza.

Per ottenere il nome GUID del volume per un determinato volume, chiamare FltGetVolumeGuidName.

Per ottenere un puntatore di volume opaco per un volume con un nome specificato, chiamare FltGetVolumeFromName.

Per altre informazioni su come assegnare un nome a un volume, vedere Supporto delle richieste di Mount Manager in un driver della classe di archiviazione**.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione fltkernel.h (include FltKernel.h)
Libreria FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Vedi anche

FilterGetDosName

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING