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 |