Freigeben über


FltIsOperationSynchronous-Funktion (fltkernel.h)

Die FltIsOperationSynchronous Routine bestimmt, ob eine bestimmte 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.

Bemerkungen

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

  • Wenn der Vorgang kein IRP-basierter E/A-Vorgang ist, ist der Vorgang synchron. Um zu ermitteln, ob ein Vorgang IRP-basiert, verwenden Sie das FLT_IS_IRP_OPERATION Makro.

  • 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 Auslagerungs-E/A-Vorgang 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 Kennzeichen wird für Vorgänge festgelegt, z. B. IRP_MJ_QUERY_INFORMATION und IRP_MJ_SET_INFORMATION, die immer synchron sind, auch wenn sie für ein Dateiobjekt ausgeführt wurde, das für asynchrone E/A geöffnet wurde.

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

Anmerkung

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 I/O-Steuerelementcode (IOCTL) oder dateisystemkontrollcode (FSCTL) darstellt, der mit METHOD_BUFFERED definiert wurde, auch wenn das Dateiobjekt für asynchrone E/A geöffnet wurde. Eine solche Anforderung wird wahrscheinlich synchron vom Dateisystem gestellt, aber dies ist in allen Fällen nicht notwendig.

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

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

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
DLL- Fltmgr.sys
IRQL- Beliebige Ebene

Siehe auch

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

IoIsOperationSynchronous