IRP_MJ_QUERY_VOLUME_INFORMATION (pilotes FS et filtre)

Date d’envoi

Le Gestionnaire d’E/S envoie la demande de IRP_MJ_QUERY_VOLUME_INFORMATION . Il peut être envoyé, par exemple, lorsqu’une application en mode utilisateur a appelé une fonction Win32 telle que GetDiskFreeSpace ou GetFileType.

Opération : Pilotes de système de fichiers

Le pilote de système de fichiers doit extraire et décoder l’objet de fichier pour déterminer si l’objet d’appareil cible est l’objet d’appareil de contrôle du système de fichiers. Si c’est le cas, et si la demande a été émise sur un handle qui est un volume ouvert (ou l’ouverture d’un objet sur le volume), le pilote de système de fichiers doit traiter la demande et terminer l’IRP.

Sinon, le pilote de système de fichiers doit échouer la requête et terminer l’IRP.

Les types d’informations de volume qui peuvent être interrogées dépendent du système de fichiers, mais incluent généralement les valeurs suivantes :

  • FileFsAttributeInformation
  • FileFsDeviceInformation
  • FileFsSizeInformation
  • FileFsVolumeInformation

Pour obtenir la liste de tous les types d’informations possibles, consultez IrpSp-Parameters.QueryVolume.FsInformationClass>.

Opération : Pilotes de redirection réseau

Un redirecteur réseau qui reçoit une demande pour FileFsDeviceInformation doit inclure FILE_REMOTE_DEVICE comme l’une des options pour le membre DeviceCharacteristics de la structure FILE_FS_DEVICE_INFORMATION retournée.

Opération : Pilotes de filtre de système de fichiers hérités

Le pilote de filtre doit passer cette IRP au pilote inférieur suivant de la pile.

Paramètres

Un système de fichiers ou un pilote de filtre appelle IoGetCurrentIrpStackLocation pour que l’IRP donné obtienne un pointeur vers son propre emplacement de pile dans l’IRP. Dans les paramètres suivants, Irp pointe vers l’IRP et IrpSp pointe vers le IO_STACK_LOCATION. Le pilote peut utiliser les informations définies dans les membres suivants de l’IRP et de l’emplacement de la pile IRP pour traiter une demande d’informations de volume de requête :

  • DeviceObject est un pointeur vers l’objet d’appareil cible.

  • Irp->AssociatedIrp.SystemBuffer pointe vers une mémoire tampon de sortie fournie par le système où les informations de volume doivent être retournées. Ces informations sont stockées dans l’une des structures suivantes :

    • FILE_FS_ATTRIBUTE_INFORMATION
    • FILE_FS_CONTROL_INFORMATION
    • FILE_FS_DEVICE_INFORMATION
    • FILE_FS_DRIVER_PATH_INFORMATION
    • FILE_FS_FULL_SIZE_INFORMATION
    • FILE_FS_OBJECTID_INFORMATION
    • FILE_FS_SIZE_INFORMATION
    • FILE_FS_VOLUME_FLAGS_INFORMATION
    • FILE_FS_VOLUME_INFORMATION
    • FILE_FS_SECTOR_SIZE_INFORMATION

    La classe FileFsVolumeFlagsInformation et la structure FILE_FS_VOLUME_INFORMATION associée sont disponibles sur Windows Vista et les versions ultérieures.

  • Irp->IoStatus pointe vers une structure IO_STATUS_BLOCK qui reçoit la status d’achèvement finale et des informations sur l’opération demandée.

  • Irp->UserBuffer est un pointeur facultatif vers une mémoire tampon de sortie fournie par l’appelant dans laquelle le contenu d’Irp-AssociatedIrp.SystemBuffer> est copié lors de l’achèvement des E/S par le gestionnaire d’E/S. Les pilotes n’utilisent pas cette mémoire tampon pour retourner les données de la demande.

  • IrpSp->FileObject pointe vers l’objet de fichier associé à DeviceObject.

    Le paramètreIrpSp-FileObject> contient un pointeur vers le champ RelatedFileObject, qui est également une structure FILE_OBJECT. Le champ RelatedFileObject de la structure FILE_OBJECT n’est pas valide pendant le traitement de IRP_MJ_QUERY_VOLUME_INFORMATION et ne doit pas être utilisé.

  • IrpSp->MajorFunction est défini sur IRP_MJ_QUERY_VOLUME_INFORMATION.

  • IrpSp->Parameters.QueryVolume.FsInformationClass est le type d’informations de volume à retourner par le système de fichiers. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
FileFsAttributeInformation Retourne une structure FILE_FS_ATTRIBUTE_INFORMATION qui contient des informations d’attribut sur le système de fichiers responsable du volume.
FileFsControlInformation Retourne une structure FILE_FS_CONTROL_INFORMATION qui contient des informations de contrôle du système de fichiers sur le volume.
FileFsDeviceInformation Retourne une structure FILE_FS_DEVICE_INFORMATION qui contient des informations sur l’appareil pour le volume.
FileFsDriverPathInformation Retourne une structure FILE_FS_DRIVER_PATH_INFORMATION qui contient des informations indiquant si un pilote spécifié se trouve dans le chemin d’E/S du volume. L’initiateur de la demande de IRP_MJ_QUERY_VOLUME_INFORMATION doit stocker le nom du pilote dans la structure FILE_FS_DRIVER_PATH_INFORMATION avant d’envoyer l’IRP à la pile de périphériques de volume du système de fichiers.
FileFsFullSizeInformation Retourne une structure FILE_FS_FULL_SIZE_INFORMATION qui contient des informations sur la quantité totale d’espace disponible sur le volume.
FileFsObjectIdInformation Retourne une structure FILE_FS_OBJECTID_INFORMATION qui contient des informations d’ID d’objet spécifiques au système de fichiers pour le volume. Ces informations d’ID d’objet ne sont pas identiques au nom de volume unique (guid) attribué par le système d’exploitation.
FileFsSizeInformation Retourne une structure de FILE_FS_SIZE_INFORMATION contenant des informations sur la quantité d’espace disponible sur le volume disponible pour l’utilisateur associé au thread à l’origine de la demande IRP_MJ_QUERY_VOLUME_INFORMATION .
FileFsVolumeInformation Retourne une FILE_FS_VOLUME_INFORMATION qui contient des informations sur le volume, telles que l’étiquette du volume, le numéro de série et l’heure de création.
FileFsSectorSizeInformation Retourne une structure FILE_FS_SECTOR_SIZE_INFORMATION qui contient des informations sur les tailles de secteur physique et logique d’un volume.
  • IrpSp->Parameters.QueryVolume.Length est la longueur, en octets, de la mémoire tampon pointée par Irp-UserBuffer>. Au retour, cette variable reçoit le nombre d’octets écrits dans la mémoire tampon.

Voir aussi

FILE_FS_ATTRIBUTE_INFORMATION

FILE_FS_CONTROL_INFORMATION

FILE_FS_DEVICE_INFORMATION

FILE_FS_DRIVER_PATH_INFORMATION

FILE_FS_FULL_SIZE_INFORMATION

FILE_FS_OBJECTID_INFORMATION

FILE_FS_SECTOR_SIZE_INFORMATION

FILE_FS_SIZE_INFORMATION

FILE_FS_VOLUME_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_VOLUME_INFORMATION

ZwQueryVolumeInformationFile

ZwSetVolumeInformationFile