Compartir a través de


Función FltIsOperationSynchronous (fltkernel.h)

La rutina FltIsOperationSynchronous determina si una estructura de datos de devolución de llamada determinada (FLT_CALLBACK_DATA) representa una operación de E/S sincrónica o asincrónica.

Sintaxis

BOOLEAN FLTAPI FltIsOperationSynchronous(
  [in] PFLT_CALLBACK_DATA CallbackData
);

Parámetros

[in] CallbackData

Puntero a la estructura de datos de devolución de llamada para la operación (FLT_CALLBACK_DATA).

Valor devuelto

FltIsOperationSynchronous devuelve TRUE si la operación es sincrónica y FALSE si la operación es asincrónica.

Comentarios

FltIsOperationSynchronous determina si una estructura de datos de devolución de llamada determinada (FLT_CALLBACK_DATA) representa una operación de E/S sincrónica o asincrónica, según las condiciones siguientes:

  • Si la operación no es una operación de E/S basada en IRP, la operación es sincrónica. Para determinar si una operación está basada en IRP, use la macro FLT_IS_IRP_OPERATION .

  • Si la operación es una operación de E/S de paginación asincrónica, la operación es asincrónica, incluso si una de las otras condiciones de esta lista es verdadera.

  • Si la operación es una operación de E/S de paginación sincrónica, la operación es sincrónica.

  • Si el objeto de archivo de la operación se abrió para E/S sincrónica, la operación es sincrónica.

  • Si la marca de IRP_SYNCHRONOUS_API se establece en irP para la operación, la operación es sincrónica. Esta marca se establece para las operaciones, como IRP_MJ_QUERY_INFORMATION y IRP_MJ_SET_INFORMATION, que siempre son sincrónicas, incluso cuando se realizan en un objeto de archivo que se abrió para E/S asincrónica.

  • Si ninguna de las condiciones anteriores es verdadera, la operación es asincrónica.

Nota

FltIsOperationSynchronous también devuelve TRUE si la estructura de datos de devolución de llamada representa una operación de IRP_MJ_DEVICE_CONTROL, IRP_MJ_INTERNAL_DEVICE_CONTROL o IRP_MJ_FILE_SYSTEM_CONTROL con un código de control de E/S (IOCTL) o código de control del sistema de archivos (FSCTL) definido con METHOD_BUFFERED, incluso si el objeto de archivo se abrió para E/S asincrónica. Es probable que este tipo de solicitud se realice sincrónicamente por el sistema de archivos, pero esto no es necesariamente cierto en todos los casos.

Cuando FltIsOperationSynchronous devuelve TRUE, esto no indica que la operación de E/S está sincronizada. Es decir, el valor TRUE no indica que un controlador de minifiltro devolvió FLT_PREOP_SYNCHRONIZE en la rutina de devolución de llamada de preoperación (PFLT_POST_OPERATION_CALLBACK) para esta operación. En su lugar, FltIsOperationSynchronous devuelve TRUE para indicar que la operación de E/S es sincrónica desde la perspectiva del administrador de E/S.

Se puede llamar a FltIsOperationSynchronous para todas las clases de operaciones: E/S rápidas, devoluciones de llamada del filtro del sistema de archivos (FSFilter) y operaciones basadas en IRP.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library FltMgr.lib
Archivo DLL Fltmgr.sys
IRQL Cualquier nivel

Consulte también

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

IoIsOperationSynchronous