Fonction FltRetrieveFileInfoOnCreateCompletionEx (fltkernel.h)
FltRetrieveFileInfoOnCreateCompletionEx interroge les informations de fichier spécifiées à l’achèvement 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 de minifiltre. Il est retourné par FltRegisterFilter et reste constant tant que le pilote de minifiltre est chargé.
[in] Data
Pointeur vers le FLT_CALLBACK_DATA données de rappel 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. Peut avoir l’une des valeurs suivantes :
Indicateur | Signification |
---|---|
QoCFileStatInformation (0x00000001) | Le système de fichiers retourne les informations de statistiques de fichier dans une structure de QUERY_ON_CREATE_FILE_STAT_INFORMATION . |
QoCFileLxInformation (0x00000002) | Le système de fichiers retourne des informations étendues de type Linux 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 les 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 de 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 pointe RetInfoBuffer .
[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 de fichier demandées, ce paramètre a la valeur NULL.
Valeur retournée
Code de retour | Description |
---|---|
STATUS_SUCCESS | Le système de fichiers a correctement retourné les informations de fichier demandées. |
STATUS_NOT_FOUND | Le système de fichiers a traité la demande, mais les informations demandées n’étaient pas présentes dans 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é pendant 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 au moyen d’API de système de fichiers normales, mais cela échouera probablement. |
Remarques
FltRequestFileInfoOnCreateCompletion et FltRetrieveFileInfoOnCreateCompletionEx permettent à un minifiltre d’obtenir des informations sur un fichier lors de la création d’un fichier, évitant ainsi le coût de performances d’une requête ultérieure qui nécessiterait une traversée de pile.
- En précréation, le minifiltre effectue un appel à FltRequestFileInfoOnCreateCompletion avec une combinaison d’entrées 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, si prise en charge, pendant qu’il traite la création.
- Après la création, le minifiltre appelle FltRetrieveFileInfoOnCreateCompletionEx pour obtenir les informations demandées dans l’appel de précréation. Si le minifiltre 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 que FltRetrieveFileInfoOnCreateCompletionEx est retourné, un minifiltre peut écrire dans la mémoire tampon vers laquelle pointe RetInfoBuffer . Tous les filtres situés au-dessus de ce minifiltre verront les modifications s’ils appellent FltRetrieveFileInfoOnCreateCompletionEx sur le type d’informations modifié.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10, version 1809 |
En-tête | fltkernel.h |
Voir aussi
FltRequestFileInfoOnCreateCompletion
QUERY_ON_CREATE_EA_INFORMATION