Fonction FltGetVolumeName (fltkernel.h)
La routine FltGetVolumeName obtient le nom du volume d’un volume donné.
Syntaxe
NTSTATUS FLTAPI FltGetVolumeName(
[in] PFLT_VOLUME Volume,
[in, out, optional] PUNICODE_STRING VolumeName,
[out, optional] PULONG BufferSizeNeeded
);
Paramètres
[in] Volume
Pointeur opaque pour le volume. Ce paramètre est obligatoire et ne peut pas avoir la valeur NULL.
[in, out, optional] VolumeName
Pointeur vers une structure de UNICODE_STRING allouée à l’appelant qui contient le nom d’objet d’appareil non persistant du volume (par exemple, « \Device\HarddiskVolume1 ») lorsque STATUS_SUCCESS est retourné. N’oubliez pas que le pool pour VolumeName-Buffer> est également alloué par l’appelant.
Ce paramètre est facultatif et peut être NULL ; toutefois, elle doit être non NULL si BufferSizeNeeded a la valeur NULL. Si ce paramètre a la valeur NULL et que BufferSizeNeeded n’a pas la valeur NULL, FltGetVolumeName stocke la taille de mémoire tampon nécessaire pour le nom du volume demandé dans le paramètre BufferSizeNeededed et retourne STATUS_BUFFER_TOO_SMALL. Consultez la section Notes.
[out, optional] BufferSizeNeeded
Pointeur vers une variable allouée par l’appelant qui reçoit la taille, en octets, du nom de volume demandé. Ce paramètre est facultatif et peut être NULL ; toutefois, elle doit être non NULL si VolumeName a la valeur NULL afin que FltGetVolumeName puisse stocker la taille de mémoire tampon nécessaire pour le nom de volume demandé.
Valeur retournée
FltGetVolumeName retourne l’une des valeurs NTSTATUS suivantes :
Code de retour | Description |
---|---|
STATUS_SUCCESS | La structure UNICODE_STRING, pointée par VolumeName, contient le nom du volume dans le membre Buffer pour la structure et la longueur du nom, en octets, dans le membre Length . |
STATUS_BUFFER_TOO_SMALL | Le membre Buffer de la structure UNICODE_STRING, pointé par VolumeName, est trop petit (comme indiqué par son membre MaximumLength ) pour contenir le nom du volume entier. Il s’agit d’un code d’erreur. |
STATUS_INVALID_PARAMETER | VolumeName et BufferSizeNeeded sont tous deux NULL. Il s’agit d’un code d’erreur. |
Remarques
Pour que cette routine réussisse, le membre Buffer de la structure UNICODE_STRING (pointé par VolumeName) doit être suffisamment grand, comme l’indique son membre MaximumLength , pour contenir l’intégralité de la chaîne de nom de volume.
Le pseudocode suivant montre une méthode possible pour acquérir un nom de volume si BufferSizeNeeded est inconnu :
Appelez FltGetVolumeName pour déterminer le pool requis pour Buffer et la taille requise pour MaximumLength. Par exemple :
FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);
Allouez des octets de pool pour Buffer et définissez
VolumeNameSize
MaximumLength surVolumeNameSize
.Appelez à nouveau FltGetVolumeName pour acquérir le nom du volume. Par exemple :
FltGetVolumeName(VolumePtr, &VolumeNameStruct, NULL);
VolumeNameStruct.Buffer
contient la chaîne de nom de volume Unicode, qui est d’une VolumeNameStruct.Length
longueur d’octets.
Pour obtenir le nom GUID de volume d’un volume donné, appelez FltGetVolumeGuidName.
Pour obtenir un pointeur de volume opaque pour un volume portant un nom donné, appelez FltGetVolumeFromName.
Pour plus d’informations sur la façon de nommer un volume, consultez Prise en charge des demandes mount Manager dans un pilote de classe de stockage**.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | fltkernel.h (inclure FltKernel.h) |
Bibliothèque | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |