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