Partager via


FltRetrieveFileInfoOnCreateCompletionEx, fonction (fltkernel.h)

FltRetrieveFileInfoOnCreateCompletionEx requêtes pour les informations de fichier spécifiées lors de la création du fichier.

Syntaxe

NTSTATUS FLTAPI FltRetrieveFileInfoOnCreateCompletionEx(
  [in]  PFLT_FILTER        Filter,
  [in]  PFLT_CALLBACK_DATA Data,
  [in]  ULONG              InfoClass,
  [out] PULONG             RetInfoSize,
  [out] PVOID              *RetInfoBuffer
);

Paramètres

[in] Filter

Pointeur de filtre opaque qui identifie de manière unique le pilote minifilter. Elle est retournée par FltRegisterFilteret reste constante tant que le pilote minifilter est chargé.

[in] Data

Pointeur vers les données de rappel FLT_CALLBACK_DATA représentant l’opération d’E/S.

[in] InfoClass

Indicateur qui indique le type d’informations de fichier à retourner. Notez que les indicateurs ne peuvent pas être combinés. Il peut s’agir de l’une des valeurs suivantes :

Drapeau Signification
QoCFileStatInformation (0x00000001) Le système de fichiers retourne des informations statistiques de fichier dans une structure QUERY_ON_CREATE_FILE_STAT_INFORMATION.
QoCFileLxInformation (0x00000002) Le système de fichiers retourne des informations de type Linux étendues dans une structure QUERY_ON_CREATE_FILE_LX_INFORMATION.
QoCFileEaInformation (0x00000004) Le système de fichiers retourne des attributs étendus (EA) dans une structure QUERY_ON_CREATE_EA_INFORMATION.
QoCFileUsnInformation (0x00000008) Le système de fichiers retourne des informations USN dans une structure QUERY_ON_CREATE_USN_INFORMATION.
QoCFileSecurityInformation (0x00000010) Le système de fichiers retourne les informations de sécurité des fichiers dans une structure QUERY_ON_CREATE_SECURITY_INFORMATION.

[out] RetInfoSize

Pointeur vers un ULONG qui reçoit la taille, en octets, de la mémoire tampon vers laquelle RetInfoBuffer pointe vers.

[out] RetInfoBuffer

Reçoit un pointeur vers la structure InfoClass demandée . Si le système de fichiers est en mesure de traiter la demande, mais ne trouve pas les informations demandées sur le fichier, ce paramètre est défini sur NULL.

Valeur de retour

Retourner le code Description
STATUS_SUCCESS Le système de fichiers a correctement retourné les informations demandées.
STATUS_NOT_FOUND Le système de fichiers a traité la requête, mais les informations demandées n’étaient pas présentes sur le fichier, ou le système de fichiers ne reconnaît pas la demande d’informations dans InfoClass. L’appelant ne doit pas utiliser les API de système de fichiers traditionnelles pour demander les informations.
STATUS_NOT_SUPPORTED Le système de fichiers n’a pas pu récupérer les informations demandées. Cette erreur se produit lorsque le système de fichiers ne prend pas en charge la demande d’informations ou l’ECP associé, ou parce que FltRequestFileInfoOnCreateCompletion n’a pas été appelée lors de la précréation du fichier. L’appelant doit plutôt utiliser les API de système de fichiers traditionnelles pour réessayer de demander les informations.
STATUS_UNSUCCESSFUL Le système de fichiers a reçu une erreur lors de la tentative de récupération des informations demandées. L’appelant peut essayer de demander les informations par le biais d’API de système de fichiers normales, mais cela échouera probablement.

Remarques

FltRequestFileInfoOnCreateCompletion et FltRetrieveFileInfoOnCreateCompletionEx autoriser un minifilter à obtenir des informations sur un fichier pendant la création de fichier, ce qui évite les coûts de performances d’une requête ultérieure qui nécessiterait un parcours de pile.

  • Dans la précréation, le minifilter effectue un appel à FltRequestFileInfoOnCreateCompletion avec une combinaison d’entrée InfoClassFlags qui identifient les informations demandées.
  • Le système de fichiers alloue la ou les structures appropriées et remplit les informations demandées, le cas échéant, pendant qu’il traite la création.
  • Dans la post-création, le minifilter appelle FltRetrieveFileInfoOnCreateCompletionEx pour obtenir les informations demandées dans l’appel de précréation. Si le minifilter a demandé plusieurs types d’informations, il doit appeler FltRetrieveFileInfoOnCreateCompletionEx une fois pour chaque type d’informations. Par exemple:

// Pre-create:
NTSTATUS status;
status = FltRequestFileInfoOnCreateCompletion( Filter,
                                               CallbackData,
                                               QoCFileStatInformation
                                                | QoCFileLxInformation
                                                | QoCFileEaInformation 
                                                | QoCFileUsnInformation );

// Post-create:
NTSTATUS status;
ULONG fileStatSize, fileLxSize, fileEaSize;
QUERY_ON_CREATE_FILE_STAT_INFORMATION* fileStatInfo;
QUERY_ON_CREATE_FILE_LX_INFORMATION* fileLxInfo;
QUERY_ON_CREATE_EA_INFORMATION* fileEaInfo;
QUERY_ON_CREATE_USN_INFORMATION* fileUsnInfo;
QUERY_ON_CREATE_SECURITY_INFORMATION* fileSecurityInfo;

status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileStatInformation,
                                                  &fileStatSize,
                                                  &fileStatInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileLxInformation,
                                                  &fileLxSize,
                                                  &fileLxInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileEaInformation, 
                                                  &fileEaSize, 
                                                  &fileEaInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileUsnInformation, 
                                                  &fileUsnInfo, 
                                                  &fileUsnInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileSecurityInformation,
                                                  &fileSecurityInfo,
                                                  &fileSecurityInfo);

Une fois FltRetrieveFileInfoOnCreateCompletionEx retourne, un minifilter peut écrire dans la mémoire tampon vers laquelle RetInfoBuffer pointe. Les filtres ci-dessus verront les modifications si elles appellent FltRetrieveFileInfoOnCreateCompletionEx sur le type d’informations modifié.

Exigences

Exigence Valeur
client minimum pris en charge Windows 10, version 1809
d’en-tête fltkernel.h

Voir aussi

ECP_LIST

FLT_CALLBACK_DATA

FltRequestFileInfoOnCreateCompletion

QUERY_ON_CREATE_EA_INFORMATION

QUERY_ON_CREATE_FILE_STAT_INFORMATION

QUERY_ON_CREATE_FILE_LX_INFORMATION