Partager via


FLT_PARAMETERS pour IRP_MJ_DIRECTORY_CONTROL union

Composant Union utilisé lorsque le champ MajorFunction de la structure FLT_IO_PARAMETER_BLOCK de l’opération est IRP_MJ_DIRECTORY_CONTROL.

Syntaxe

typedef union _FLT_PARAMETERS {
  ...   ;
  union {
    struct {
      ULONG                   Length;
      PUNICODE_STRING         FileName;
      FILE_INFORMATION_CLASS  FileInformationClass;
      ULONG POINTER_ALIGNMENT FileIndex;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } QueryDirectory;
    struct {
      ULONG                   Length;
      ULONG POINTER_ALIGNMENT CompletionFilter;
      ULONG                   Spare1;
      ULONG POINTER_ALIGNMENT Spare2;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } NotifyDirectory;
  } DirectoryControl;
  ...   ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

Membres

  • DirectoryControl : structure contenant les membres suivants.

  • QueryDirectory : composant Union utilisé pour les opérations de IRP_MN_QUERY_DIRECTORY.

  • Longueur : longueur, en octets, de la mémoire tampon vers laquelle pointe le membre QueryDirectory.DirectoryBuffer .

  • FileName : pointeur vers une structure de UNICODE_STRING qui contient le nom d’un fichier dans le répertoire spécifié.

  • FileInformationClass : spécifie l’une des valeurs décrites ci-dessous.

    Valeur Signification
    FileBothDirectoryInformation Retourne une structure FILE_BOTH_DIR_INFORMATION pour chaque fichier.
    FileDirectoryInformation Retourne une structure FILE_DIRECTORY_INFORMATION pour chaque fichier.
    FileFullDirectoryInformation Retourne une structure FILE_FULL_DIR_INFORMATION pour chaque fichier.
    FileIdBothDirectoryInformation Retourne une structure FILE_ID_BOTH_DIR_INFORMATION pour chaque fichier.
    FileIdFullDirectoryInformation Retourne une structure FILE_ID_FULL_DIR_INFORMATION pour chaque fichier.
    FileNamesInformation Retourne une structure FILE_NAMES_INFORMATION pour chaque fichier.
    FileObjectIdInformation Retourne une structure FILE_OBJECTID_INFORMATION pour chaque fichier.
    FileReparsePointInformation Retourne une structure FILE_REPARSE_POINT_INFORMATION unique pour le répertoire.
  • FileIndex : index du fichier où l’analyse du répertoire commence. Ignoré si l’indicateur SL_INDEX_SPECIFIED n’est pas défini. Ce paramètre ne peut pas être spécifié dans une fonction Win32 ou une routine de prise en charge en mode noyau. Actuellement, il est utilisé uniquement par la machine DOS virtuelle NT (NTVDM), qui existe uniquement sur les systèmes d’exploitation 32 bits NT. Notez que l’index de fichier n’est pas défini pour les systèmes de fichiers, tels que NTFS, dans lesquels la position d’un fichier dans le répertoire parent n’est pas fixe et peut être modifiée à tout moment pour maintenir l’ordre de tri.

  • DirectoryBuffer : pointeur vers une mémoire tampon de sortie fournie par l’appelant qui reçoit les informations demandées sur le contenu du répertoire. Ce membre est facultatif et peut avoir la valeur NULL si une MDL est fournie dans QueryDirectory.MdlAddress. Consultez Remarques.

  • MdlAddress : adresse d’une liste de descripteurs de mémoire (MDL) qui décrit la mémoire tampon vers laquelle pointe le membre QueryDirectory.DirectoryBuffer . Ce membre est facultatif et peut avoir la valeur NULL si une mémoire tampon est fournie dans QueryDirectory.DirectoryBuffer. Consultez Remarques.

  • NotifyDirectory : composant d’union utilisé pour les opérations de IRP_MN_NOTIFY_CHANGE_DIRECTORY.

  • Longueur : longueur, en octets, de la mémoire tampon vers laquelle pointe le membre NotifyDirectory.DirectoryBuffer .

  • CompletionFilter : masque de bits d’indicateurs qui spécifient les types de modifications apportées aux fichiers ou répertoires qui doivent entraîner la fin des IRP dans la liste des notifications. Les valeurs d’indicateur possibles sont décrites ci-dessous.

    Indicateur Signification
    FILE_NOTIFY_CHANGE_FILE_NAME Un fichier a été ajouté, supprimé ou renommé dans ce répertoire.
    FILE_NOTIFY_CHANGE_DIR_NAME Un sous-répertoire a été créé, supprimé ou renommé.
    FILE_NOTIFY_CHANGE_NAME Le nom de ce répertoire a changé.
    FILE_NOTIFY_CHANGE_ATTRIBUTES La valeur d’un attribut de ce fichier, comme l’heure du dernier accès, a changé.
    FILE_NOTIFY_CHANGE_SIZE La taille de ce fichier a changé.
    FILE_NOTIFY_CHANGE_LAST_WRITE L’heure de la dernière modification de ce fichier a changé.
    FILE_NOTIFY_CHANGE_LAST_ACCESS L’heure du dernier accès de ce fichier a changé.
    FILE_NOTIFY_CHANGE_CREATION L’heure de création de ce fichier a changé.
    FILE_NOTIFY_CHANGE_EA Les attributs étendus de ce fichier ont été modifiés.
    FILE_NOTIFY_CHANGE_SECURITY Les informations de sécurité de ce fichier ont changé.
    FILE_NOTIFY_CHANGE_STREAM_NAME Un flux de fichiers a été ajouté, supprimé ou renommé dans ce répertoire.
    FILE_NOTIFY_CHANGE_STREAM_SIZE La taille de ce flux de fichiers a changé.
    FILE_NOTIFY_CHANGE_STREAM_WRITE Les données de ce flux de fichiers ont changé.
  • Spare1 : non utilisé actuellement.

  • Spare2 : non utilisé actuellement.

  • DirectoryBuffer : pointeur vers une mémoire tampon de sortie fournie par l’appelant qui reçoit les informations demandées sur le contenu du répertoire. Ce membre est facultatif et peut avoir la valeur NULL si une MDL est fournie dans NotifyDirectory.MdlAddress. Consultez Remarques.

  • MdlAddress : adresse d’un MDL qui décrit la mémoire tampon vers laquelle pointe le membre NotifyDirectory.DirectoryBuffer . Ce membre est facultatif et peut être NULL si une mémoire tampon est fournie dans NotifyDirectory.DirectoryBuffer. Consultez Remarques.

Remarques

La structure FLT_PARAMETERS pour les opérations de IRP_MJ_DIRECTORY_CONTROL contient les paramètres d’une opération d’informations de contrôle d’annuaire basée sur IRP représentée par une structure de données de rappel (FLT_CALLBACK_DATA). Il est contenu dans une structure FLT_IO_PARAMETER_BLOCK.

Si une mémoire tampon DirectoryBuffer et MdlAddress sont fournies, il est recommandé que les minifiltres utilisent le MDL. La mémoire vers laquelle DirectoryBuffer pointe est valide lorsqu’il s’agit d’une adresse en mode utilisateur accessible dans le contexte du processus d’appel, ou s’il s’agit d’une adresse en mode noyau.

Si un minifiltre modifie la valeur de MdlAddress, après son rappel post-opération, Filter Manager libère le MDL actuellement stocké dans MdlAddress et restaure la valeur précédente de MdlAddress.

IRP_MJ_DIRECTORY_CONTROL est une opération basée sur IRP.

Configuration requise

Type d’exigence Condition requise
En-tête Fltkernel.h (inclure Fltkernel.h)

Voir aussi

FILE_BOTH_DIR_INFORMATION

FILE_DIRECTORY_INFORMATION

FILE_FULL_DIR_INFORMATION

FILE_ID_BOTH_DIR_INFORMATION

FILE_ID_FULL_DIR_INFORMATION

FILE_NAMES_INFORMATION

FILE_OBJECTID_INFORMATION

FILE_REPARSE_POINT_INFORMATION

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltNotifyFilterChangeDirectory

FsRtlNotifyFilterChangeDirectory

FsRtlNotifyFilterReportChange

FsRtlNotifyFullChangeDirectory

FsRtlNotifyFullReportChange

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile