structure FS_FILTER_CALLBACK_DATA (ntifs.h)

FS_FILTER_CALLBACK_DATA est la structure de données de rappel pour l’opération de FS_FILTER_CALLBACK ou de FS_FILTER_COMPLETION_CALLBACK d’un FS_FILTER_CALLBACKS.

Syntaxe

typedef struct _FS_FILTER_CALLBACK_DATA {
  ULONG                 SizeOfFsFilterCallbackData;
  UCHAR                 Operation;
  UCHAR                 Reserved;
  struct _DEVICE_OBJECT *DeviceObject;
  struct _FILE_OBJECT   *FileObject;
  FS_FILTER_PARAMETERS  Parameters;
} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;

Membres

SizeOfFsFilterCallbackData

Taille de cette structure, en octets. Défini sur sizeof(FS_FILTER_CALLBACK_DATA).

Operation

Opération de système de fichiers pour laquelle la routine de rappel doit être appelée. Cette opération peut être l’une des suivantes :

  • FS_FILTER_ACQUIRE_FOR_SECTION_SYNCHRONIZATION
  • FS_FILTER_RELEASE_FOR_SECTION_SYNCHRONIZATION
  • FS_FILTER_ACQUIRE_FOR_MOD_WRITE
  • FS_FILTER_RELEASE_FOR_MOD_WRITE
  • FS_FILTER_ACQUIRE_FOR_CC_FLUSH
  • FS_FILTER_RELEASE_FOR_CC_FLUSH FS_FILTER_QUERY_OPEN

Reserved

Réservé pour le système.

DeviceObject

Objet d’appareil pour cette opération.

FileObject

Objet File pour cette opération.

Parameters

Union contenant tous les paramètres spécifiques à l’opération. Consultez la section Notes.

Remarques

est membre de la structure FS_FILTER_CALLBACKS , qui est transmise à FsRtlRegisterFileSystemFilterCallbacks dans un système de fichiers ou la routine DriverEntry d’un pilote de filtre.

L’union parameters est définie comme suit :


typedef union _FS_FILTER_PARAMETERS {
    //
    //  AcquireForModifiedPageWriter
    //
    struct {
        PLARGE_INTEGER EndingOffset;
        PERESOURCE *ResourceToRelease;
    } AcquireForModifiedPageWriter;

    //
    //  ReleaseForModifiedPageWriter
    //
    struct {
        PERESOURCE ResourceToRelease;
    } ReleaseForModifiedPageWriter;

    //
    //  AcquireForSectionSynchronization
    //
    struct {
        FS_FILTER_SECTION_SYNC_TYPE SyncType;
        ULONG PageProtection;
        PFS_FILTER_SECTION_SYNC_OUTPUT OutputInformation;
        ULONG Flags;
    } AcquireForSectionSynchronization;

    //
    // QueryOpen
    //
    struct {
        PIRP Irp;
        PVOID FileInformation;
        PULONG Length;
        FILE_INFORMATION_CLASS FileInformationClass;
        NTSTATUS CompletionStatus;
    } QueryOpen;

    //
    //  Other
    //
    struct {
        PVOID Argument1;
        PVOID Argument2;
        PVOID Argument3;
        PVOID Argument4;
        PVOID Argument5;
    } Others;
} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;

Les membres de structure de l’union FS_FILTER_PARAMETERS sont décrits comme suit.

  • AcquireForModifiedPageWriter

    • EndingOffset : décalage du dernier octet en cours d’écriture plus un.
    • ResourceToRelease : ressource à libérer. Ce paramètre ne doit pas avoir de valeur NULL .
  • ReleaseForModifiedPageWriter

    • ResourceToRelease : ressource à libérer. Ce paramètre ne doit pas avoir de valeur NULL .
  • AcquireForSectionSynchronization

    • SyncType : type de synchronisation demandé pour la section. Définissez sur SyncTypeCreateSection si une section est en cours de création ; SyncTypeOther sinon .

    • PageProtection : type de protection de page demandé pour la section. Doit être égal à zéro si SyncType est SyncTypeOther. Sinon, l’un des indicateurs suivants, éventuellement ORed avec PAGE_NOCACHE :

      • PAGE_NOACCESS
      • PAGE_READONLY
      • PAGE_READWRITE
      • PAGE_WRITECOPY
      • PAGE_EXECUTE
      • PAGE_EXECUTE_READ
      • PAGE_EXECUTE_READWRITE
      • PAGE_EXECUTE_WRITECOPY
      • PAGE_GUARD
      • PAGE_NOCACHE
      • PAGE_WRITECOMBINE
    • OutputInformation : structure FS_FILTER_SECTION_SYNC_OUTPUT qui contient les informations de sortie étendues de la section.

    • Indicateurs : quand SyncType est SyncTypeCreateSection, les indicateurs peuvent être l’une des valeurs suivantes :

      • FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_ACCESS (0x00000001) : le système de fichiers ne doit pas mettre à jour le dernier délai d’accès au fichier via la section en cours de création.
      • FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_WRITE (0x00000002) : le système de fichiers ne doit pas mettre à jour l’heure de la dernière écriture pour les modifications apportées au fichier via la section en cours de création.
  • QueryOpen

    • Irp : pointeur vers l’IRP associé à cette opération.

    • FileInformation : pointeur vers une mémoire tampon allouée par l’appelant dans laquelle la routine écrit les informations demandées sur l’objet de fichier. Le membre FileInformationClass spécifie le type d’informations que l’appelant demande.

    • Longueur : taille, en octets, de la mémoire tampon pointée par FileInformation.

    • CompletionStatus : valeur NTSTATUS qui reçoit la status d’achèvement finale et des informations sur l’opération. CompletionStatus peut être défini par le rappel PostQueryOpen pour faire échouer l’opération, car les rappels post n’ont aucune valeur de retour. Il est principalement utilisé pour que le rappel PostQueryOpen puisse retourner STATUS_FLT_DISALLOW_FSFILTER_IO pour demander le secours au chemin lent. Cela entraîne le gestionnaire d’E/S à traiter la demande en effectuant une ouverture/requête/fermeture du fichier. De même, le rappel PreQueryOpen peut retourner STATUS_FLT_DISALLOW_FSFILTER_IO pour demander le secours au chemin lent.

    • FileInformationClass : type d’informations à retourner sur le fichier, dans la mémoire tampon vers laquelle FileInformation pointe. Les pilotes d’appareil et intermédiaires peuvent spécifier l’une des valeurs FILE_INFORMATION_CLASS suivantes. D’autres valeurs provoquent l’échec de l’appel et ne doivent pas être passées aux appels PreQueryOpen/PostQueryOpen.

    FILE_INFORMATION_CLASS valeur Type d’informations retournées
    FileStatInformation Structure FILE_STAT_INFORMATION . Cette structure contient un masque d’accès. Pour plus d’informations sur les masques d’accès, consultez ACCESS_MASK.
    FileStatLxInformation Structure FILE_STAT_LX_INFORMATION . Cette structure contient un masque d’accès. Pour plus d’informations sur les masques d’accès, consultez ACCESS_MASK.
    FileCaseSensitiveInformation Structure FILE_CASE_SENSITIVE_INFORMATION .
  • Autres

    • Argument1 : réservé pour une utilisation ultérieure.
    • Argument2 : réservé pour une utilisation ultérieure.
    • Argument3 : réservé pour une utilisation ultérieure.
    • Argument4 : réservé pour une utilisation ultérieure.
    • Argument5 : réservé pour une utilisation ultérieure.

Configuration requise

Condition requise Valeur
En-tête ntifs.h

Voir aussi

FS_FILTER_CALLBACKS

FsRtlRegisterFileSystemFilterCallbacks