Freigeben über


FltIsOperationSynchronous-Funktion (fltkernel.h)

Die FltIsOperationSynchronous-Routine bestimmt, ob eine angegebene Rückrufdatenstruktur (FLT_CALLBACK_DATA) einen synchronen oder asynchronen E/A-Vorgang darstellt.

Syntax

BOOLEAN FLTAPI FltIsOperationSynchronous(
  [in] PFLT_CALLBACK_DATA CallbackData
);

Parameter

[in] CallbackData

Zeiger auf die Rückrufdatenstruktur für den Vorgang (FLT_CALLBACK_DATA).

Rückgabewert

FltIsOperationSynchronous gibt TRUE zurück, wenn der Vorgang synchron ist, und FALSE, wenn der Vorgang asynchron ist.

Hinweise

FltIsOperationSynchronous bestimmt, ob eine angegebene Rückrufdatenstruktur (FLT_CALLBACK_DATA) gemäß den folgenden Bedingungen einen synchronen oder asynchronen E/A-Vorgang darstellt:

  • Wenn es sich bei dem Vorgang nicht um einen IRP-basierten E/A-Vorgang handelt, ist der Vorgang synchron. Verwenden Sie das Makro FLT_IS_IRP_OPERATION , um zu bestimmen, ob ein Vorgang IRP-basiert.

  • Wenn es sich bei dem Vorgang um einen asynchronen Auslagerungs-E/A-Vorgang handelt, ist der Vorgang asynchron, auch wenn eine der anderen Bedingungen in dieser Liste zutrifft.

  • Wenn es sich bei dem Vorgang um einen synchronen E/A-Vorgang für das Paging handelt, ist der Vorgang synchron.

  • Wenn das Dateiobjekt für den Vorgang für synchrone E/A geöffnet wurde, ist der Vorgang synchron.

  • Wenn das IRP_SYNCHRONOUS_API-Flag im IRP für den Vorgang festgelegt ist, ist der Vorgang synchron. Dieses Flag ist für Vorgänge wie IRP_MJ_QUERY_INFORMATION und IRP_MJ_SET_INFORMATION festgelegt, die immer synchron sind, auch wenn sie für ein Dateiobjekt ausgeführt werden, das für asynchrone E/A geöffnet wurde.

  • Wenn keine der oben genannten Bedingungen wahr ist, ist der Vorgang asynchron.

Hinweis

FltIsOperationSynchronous gibt auch TRUE zurück, wenn die Rückrufdatenstruktur einen IRP_MJ_DEVICE_CONTROL-, IRP_MJ_INTERNAL_DEVICE_CONTROL- oder IRP_MJ_FILE_SYSTEM_CONTROL-Vorgang mit einem IOCTL- oder Dateisystemsteuerungscode (FSCTL) darstellt, der mit METHOD_BUFFERED definiert wurde, selbst wenn das Dateiobjekt für asynchrone E/A-Vorgänge geöffnet wurde. Eine solche Anforderung wird wahrscheinlich synchron vom Dateisystem gestellt, aber dies trifft nicht unbedingt in allen Fällen zu.

Wenn FltIsOperationSynchronous TRUE zurückgibt, gibt dies nicht an, dass der E/A-Vorgang synchronisiert wird. Das heißt, der TRUE-Wert gibt nicht an, dass ein Minifiltertreiber FLT_PREOP_SYNCHRONIZE in der PFLT_POST_OPERATION_CALLBACK-Routine (Preoperation Callback) für diesen Vorgang zurückgegeben hat. Stattdessen gibt FltIsOperationSynchronous TRUE zurück, um anzugeben, dass der E/A-Vorgang aus Sicht des E/A-Managers synchron ist.

FltIsOperationSynchronous kann für alle Klassen von Vorgängen aufgerufen werden: schnelle E/A,Dateisystemfilter-Rückrufe (FSFilter) und IRP-basierte Vorgänge.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header fltkernel.h (fltkernel.h einschließen)
Bibliothek FltMgr.lib
DLL Fltmgr.sys
IRQL Beliebige Ebene

Weitere Informationen

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

IoIsOperationSynchron