FltGetVolumeName, fonction (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 être NULL.
[in, out, optional] VolumeName
Pointeur vers une structure UNICODE_STRING allouée par 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->tampon est également alloué par l’appelant.
Ce paramètre est facultatif et peut être NULL ; toutefois, elle doit être non-NULL si BufferSizeNeededed est NULL. Si ce paramètre est NULL et BufferSizeNeededed n’est pas 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. Voir les remarques.
[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 ne doit pas êtreNULL si VolumeName est NULL afin que FltGetVolumeName puisse stocker la taille de mémoire tampon nécessaire pour le nom du volume demandé.
Valeur de retour
FltGetVolumeName retourne l’une des valeurs NTSTATUS suivantes :
Retourner le code | 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 l’intégralité du nom du volume. Il s’agit d’un code d’erreur. |
STATUS_INVALID_PARAMETER | VolumeName et BufferSizeNeeded sont tous les deux NULL. Il s’agit d’un code d’erreur. |
Remarques
Pour que cette routine réussisse, le membre de la UNICODE_STRING de la structure UNICODE_STRING (pointé par VolumeName) doit être suffisamment volumineux, comme indiqué par 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 BufferSizeNeededed est inconnu :
Appelez FltGetVolumeName pour déterminer le pool requis pour tampon et la taille requise pour maximumLength. Par exemple :
FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);
Allouez
VolumeNameSize
octets de pool pour de mémoire tampon et définissez MaximumLength surVolumeNameSize
.Appelez FltGetVolumeName à nouveau 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 VolumeNameStruct.Length
octets de longueur.
Pour obtenir le nom DU GUID du volume pour 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 le nom d’un volume, consultez prise en charge des requêtes Mount Manager dans un pilote de classe de stockage**.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | fltkernel.h (include FltKernel.h) |
bibliothèque | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |