FltProcessFileLock-Funktion (fltkernel.h)

Die FltProcessFileLock-Routine verarbeitet und schließt einen Dateisperrvorgang ab.

Syntax

FLT_PREOP_CALLBACK_STATUS FLTAPI FltProcessFileLock(
  [in]           PFILE_LOCK         FileLock,
  [in]           PFLT_CALLBACK_DATA CallbackData,
  [in, optional] PVOID              Context
);

Parameter

[in] FileLock

Zeiger auf die FILE_LOCK-Struktur für die Datei. Diese Struktur muss durch einen vorherigen Aufruf von FltAllocateFileLock oder FltInitializeFileLock initialisiert worden sein.

[in] CallbackData

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

[in, optional] Context

Kontextzeiger, der beim Abschließen des Vorgangs verwendet werden soll. Dieser Kontextzeiger wird an die Rückrufroutinen CompleteLockCallbackDataRoutine und UnlockRoutine übergeben, die der Minifiltertreiber in einem vorherigen Aufruf von FltAllocateFileLock registriert hat. Dieser Parameter ist optional und kann NULL sein.

Rückgabewert

FltProcessFileLock gibt eine der folgenden Rückgaben zurück.

Rückgabecode Beschreibung
FLT_PREOP_COMPLETE Der Filter-Manager erfolgt mit dem Rückrufdaten, der jetzt abgeschlossen werden kann.
FLT_PREOP_DISALLOW_FASTIO CallbackData stellt einen schnellen E/A-Vorgang dar, und ein Minifiltertreiber im Stapel hat die Verwendung der schnellen E/A für diesen Vorgang nicht zugelassen. Der Filter-Manager sendet den Vorgang nicht an Minifiltertreiber unterhalb des Vorgangs, der den Vorgang nicht zugelassen hat. In diesem Fall ruft der Filter-Manager nur die Postoperation-Rückrufroutinen (und CompleteLockCallbackDataRoutine-Rückrufe ) der Minifiltertreiber über dem Minifiltertreiber auf, die den schnellen E/A-Vorgang nicht zugelassen haben.
FLT_PREOP_PENDING Der Sperrvorgang wurde geschrieben.

Hinweise

FltProcessFileLock verarbeitet einen Dateisperrvorgang (IRP_MJ_LOCK_CONTROL). Der Sperrvorgang kann ein schneller E/A- oder IRP-basierter Vorgang sein.

Für Entsperrvorgänge ruft der Filter-Manager die UnlockRoutine-Rückrufroutine-Routine auf, die der Aufrufer für die FILE_LOCK-Struktur in einem vorherigen Aufruf von FltAllocateFileLock registriert hat.

Nach Abschluss des Sperrvorgangs ruft der Filter-Manager die Rückrufroutine (CompleteLockCallbackDataRoutine) (PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) auf, die der Aufrufer für die FILE_LOCK-Struktur in einem vorherigen Aufruf von FltAllocateFileLock registriert hat.

Wenn der an FltProcessFileLock übergebene CallbackData-Parameter einen schnellen E/A-Vorgang darstellt, wird der im CompleteLockCallbackDataRoutine-Parameter der FltAllocateFileLock-Routine angegebene Rückruf nicht aufgerufen. Nur wenn der E/A-Vorgang in CallbackData ein IRP ist und CompleteLockCallbackDataRoutine nicht NULL ist, wird die Rückrufroutine aufgerufen.

Verwenden Sie das Makro FLT_IS_FASTIO_OPERATION, um zu bestimmen, ob callbackData einen schnellen E/A-Vorgang darstellt.

Um eine neue Dateisperrstruktur zuzuordnen und zu initialisieren, rufen Sie FltAllocateFileLock auf.

Um eine initialisierte FILE_LOCK-Struktur frei zu geben, rufen Sie FltFreeFileLock auf.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP mit SP2
Unterstützte Mindestversion (Server) Windows Server 2003 mit SP1
Zielplattform Universell
Header fltkernel.h (include Fltkernel.h)
Bibliothek FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Weitere Informationen

FILE_LOCK

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FltAllocateFileLock

FltCheckLockForReadAccess

FltCheckLockForWriteAccess

FltFreeFileLock

FltInitializeFileLock

FltUninitializeFileLock

FsRtlProcessFileLock

IRP_MJ_LOCK_CONTROL

PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE

[PUNLOCK_ROUTINE] (.. /ntifs/nc-ntifs-punlock_routine.md