IRP_MJ_QUERY_EA (pilotes FS et filtre)

Date d’envoi

Le Gestionnaire d’E/S, d’autres composants du système d’exploitation et d’autres pilotes en mode noyau envoient des requêtes IRP_MJ_QUERY_EA lorsqu’une application en mode utilisateur a demandé des informations sur les attributs étendus d’un fichier.

Opération : Pilotes de système de fichiers

Si le système de fichiers prend en charge les attributs étendus, le pilote du système de fichiers doit traiter la requête et terminer l’IRP. Sinon, il doit retourner STATUS_EAS_NOT_SUPPORTED.

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 de IRP_MJ_QUERY_EA :

  • 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 à utiliser comme mémoire tampon système intermédiaire. Utilisé pour les E/S METHOD_BUFFERED.

  • 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->MdlAddress est l’adresse d’une liste de descripteurs de mémoire (MDL) décrivant une mémoire tampon de sortie qui reçoit les informations d’attribut étendu. Utilisé pour les E/S METHOD_DIRECT.

  • Irp->UserBuffer pointe vers une mémoire tampon de sortie structurée FILE_FULL_EA_INFORMATION fournie par l’appelant qui reçoit les informations d’attribut étendues. Utilisé pour METHOD_NEITHER E/S.

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

    Le paramètre IrpSp-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_EA et ne doit pas être utilisé.

  • IrpSp->Les indicateurs peuvent être une ou plusieurs des valeurs suivantes.

Indicateur Signification
SL_INDEX_SPECIFIED Commencez l’analyse à l’entrée de la liste d’attributs étendue dont l’index est donné par IrpSp-Parameters.QueryEa.EaIndex>.
SL_RESTART_SCAN Commencez l’analyse à la première entrée de la liste. Si cet indicateur n’est pas défini, reprenez l’analyse d’une demande de IRP_MJ_QUERY_EA précédente.
SL_RETURN_SINGLE_ENTRY Retourne uniquement la première entrée trouvée.
  • IrpSp->MajorFunction est défini sur IRP_MJ_QUERY_EA.

  • IrpSp->Parameters.QueryEa.EaIndex est l’index de l’entrée à laquelle commencer l’analyse de la liste d’attributs étendus. Ce paramètre est ignoré si l’indicateur SL_INDEX_SPECIFIED n’est pas défini ou si IrpSp-Parameters.QueryEa.EaList> pointe vers une liste vide.

  • IrpSp->Parameters.QueryEa.EaList pointe vers une mémoire tampon d’entrée structurée FILE_GET_EA_INFORMATION fournie par l’appelant qui spécifie les attributs étendus à interroger.

  • IrpSp->Parameters.QueryEa.EaListLength est la longueur en octets de la mémoire tampon pointée par IrpSp-Parameters.QueryEa.EaList>.

  • IrpSp->Parameters.QueryEa.Length est la longueur en octets de la mémoire tampon de sortie.

Remarques

Lorsqu’une mémoire tampon courte est fournie et qu’STATUS_BUFFER_OVERFLOW est retournée, NTFS retourne la dernière entrée FILE_FULL_EA_INFORMATION qui correspond. Lorsqu’une mémoire tampon courte est fournie et qu’STATUS_BUFFER_TOO_SMALL est retournée, NTFS ne peut pas s’adapter aux entrées FILE_FULL_EA_INFORMATION.

Sur Windows Vista et versions ultérieures, FAT16 ne prend plus en charge les attributs étendus.

Voir aussi

FILE_FULL_EA_INFORMATION

FILE_GET_EA_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCheckEaBufferValidity

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_EA