Partager via


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 sur VolumeNameSize.

  • 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

Voir aussi

FilterGetDosName

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING