Fonction FltIsOperationSynchronous (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 retournée

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 IRP_SYNCHRONOUS_API est défini dans l’IRP de 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.

Notes

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’E/S (IOCTL) ou un code de contrôle du système de fichiers (FSCTL) qui a été défini avec METHOD_BUFFERED, même si l’objet fichier a été ouvert pour les E/S asynchrones. Une telle demande est susceptible d’être rendue synchrone par le système de fichiers, mais ce 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 de minifiltre 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 peut être appelé pour toutes les classes d’opérations : E/S rapides, rappels de filtre de système de fichiers (FSFilter) et opérations basées sur IRP.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque FltMgr.lib
DLL Fltmgr.sys
IRQL N’importe quel niveau

Voir aussi

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

IoIsOperationSynchronous