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 |