Partager via


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 VolumeNameSizeMaximumLength 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

Voir aussi

FilterGetDosName

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING