FltIsOperationSynchronous, fonction (fltkernel.h)
La routine FltIsOperationSynchronous détermine si une structure de données de rappel donnée (FLT_CALLBACK_DATA) représente une opération d’E/S synchrone ou asynchrone.
Syntaxe
BOOLEAN FLTAPI FltIsOperationSynchronous(
[in] PFLT_CALLBACK_DATA CallbackData
);
Paramètres
[in] CallbackData
Pointeur vers la structure de données de rappel pour l’opération (FLT_CALLBACK_DATA).
Valeur de retour
FltIsOperationSynchronous retourne TRUE si l’opération est synchrone et FALSE si l’opération est asynchrone.
Remarques
FltIsOperationSynchronous détermine si une structure de données de rappel donnée (FLT_CALLBACK_DATA) représente une opération d’E/S synchrone ou asynchrone, selon les conditions suivantes :
Si l’opération n’est pas une opération d’E/S basée sur IRP, l’opération est synchrone. Pour déterminer si une opération est basée sur IRP, utilisez la macro FLT_IS_IRP_OPERATION.
Si l’opération est une opération d’E/S de pagination asynchrone, l’opération est asynchrone, même si l’une des autres conditions de cette liste est vraie.
Si l’opération est une opération d’E/S de pagination synchrone, l’opération est synchrone.
Si l’objet fichier de l’opération a été ouvert pour les E/S synchrones, l’opération est synchrone.
Si l’indicateur de IRP_SYNCHRONOUS_API est défini dans l’IRP pour l’opération, l’opération est synchrone. Cet indicateur est défini pour les opérations, telles que IRP_MJ_QUERY_INFORMATION et IRP_MJ_SET_INFORMATION, qui sont toujours synchrones, même lorsqu’elles sont effectuées sur un objet de fichier ouvert pour les E/S asynchrones.
Si aucune des conditions ci-dessus n’est vraie, l’opération est asynchrone.
Note
FltIsOperationSynchronous retourne également TRUE si la structure de données de rappel représente une opération IRP_MJ_DEVICE_CONTROL, IRP_MJ_INTERNAL_DEVICE_CONTROL ou IRP_MJ_FILE_SYSTEM_CONTROL avec un code de contrôle D/S (IOCTL) ou un code de contrôle de système de fichiers (FSCTL) défini avec METHOD_BUFFERED, même si l’objet de fichier a été ouvert pour les E/S asynchrones. Une telle demande est susceptible d’être effectuée de manière synchrone par le système de fichiers, mais cela n’est pas nécessairement vrai dans tous les cas.
Lorsque FltIsOperationSynchronous retourne TRUE, cela n’indique pas que l’opération d’E/S est synchronisée. Autrement dit, la valeur TRUE n’indique pas qu’un pilote minifilter a retourné FLT_PREOP_SYNCHRONIZE dans la routine de rappel de préopération (PFLT_POST_OPERATION_CALLBACK) pour cette opération. Au lieu de cela, FltIsOperationSynchronous retourne TRUE pour indiquer que l’opération d’E/S est synchrone du point de vue du gestionnaire d’E/S.
FltIsOperationSynchronous pouvez être appelée pour toutes les classes d’opérations : E/S rapides, rappels FSFilter (File System Filter) et opérations basées sur IRP.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | fltkernel.h (include Fltkernel.h) |
bibliothèque | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | N’importe quel niveau |