Funzione FltIsOperationSynchronous (fltkernel.h)

La routine FltIsOperationSynchronous determina se una determinata struttura di dati di callback (FLT_CALLBACK_DATA) rappresenta un'operazione di I/O sincrona o asincrona.

Sintassi

BOOLEAN FLTAPI FltIsOperationSynchronous(
  [in] PFLT_CALLBACK_DATA CallbackData
);

Parametri

[in] CallbackData

Puntatore alla struttura dei dati di callback per l'operazione (FLT_CALLBACK_DATA).

Valore restituito

FltIsOperationSynchronous restituisce TRUE se l'operazione è sincrona e FALSE se l'operazione è asincrona.

Commenti

FltIsOperationSynchronous determina se una determinata struttura dei dati di callback (FLT_CALLBACK_DATA) rappresenta un'operazione di I/O sincrona o asincrona, in base alle condizioni seguenti:

  • Se l'operazione non è un'operazione di I/O basata su IRP, l'operazione è sincrona. Per determinare se un'operazione è basata su IRP, utilizzare la macro FLT_IS_IRP_OPERATION .

  • Se l'operazione è un'operazione di I/O di paging asincrona, l'operazione è asincrona, anche se una delle altre condizioni in questo elenco è vera.

  • Se l'operazione è un'operazione di I/O di paging sincrona, l'operazione è sincrona.

  • Se l'oggetto file per l'operazione è stato aperto per operazioni di I/O sincrone, l'operazione è sincrona.

  • Se il flag IRP_SYNCHRONOUS_API è impostato in IRP per l'operazione, l'operazione è sincrona. Questo flag viene impostato per le operazioni, ad esempio IRP_MJ_QUERY_INFORMATION e IRP_MJ_SET_INFORMATION, che sono sempre sincrone, anche quando vengono eseguite su un oggetto file aperto per operazioni di I/O asincrone.

  • Se nessuna delle condizioni precedenti è true, l'operazione è asincrona.

Nota

FltIsOperationSynchronous restituisce true anche se la struttura dei dati di callback rappresenta un'operazione di IRP_MJ_DEVICE_CONTROL, IRP_MJ_INTERNAL_DEVICE_CONTROL o IRP_MJ_FILE_SYSTEM_CONTROL con un codice di controllo I/O (IOCTL) o codice di controllo del file system definito con METHOD_BUFFERED, anche se l'oggetto file è stato aperto per operazioni di I/O asincrone. È probabile che tale richiesta venga effettuata in modo sincrono dal file system, ma questo non è necessariamente vero in tutti i casi.

Quando FltIsOperationSynchronous restituisce TRUE, questa operazione non indica che l'operazione di I/O è sincronizzata. Ovvero, il valore TRUE non indica che un driver minifilter ha restituito FLT_PREOP_SYNCHRONIZE nella routine di callback di preoperazione (PFLT_POST_OPERATION_CALLBACK) per questa operazione. FltIsOperationSynchronous restituisce invece TRUE per indicare che l'operazione di I/O è sincrona dal punto di vista del gestore di I/O.

FltIsOperationSynchronous può essere chiamato per tutte le classi di operazioni: callback di I/O veloce, filtro del file system (FSFilter) e operazioni basate su IRP.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione fltkernel.h (include Fltkernel.h)
Libreria FltMgr.lib
DLL Fltmgr.sys
IRQL Qualsiasi livello

Vedi anche

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

IoIsOperationSynchronous