Freigeben über


FltProcessFileLock-Funktion (fltkernel.h)

Die FltProcessFileLock Routineprozesse 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

Zeigen Sie auf die FILE_LOCK Struktur für die Datei. Diese Struktur muss durch einen vorherigen Aufruf von FltAllocateFileLock oder FltInitializeFileLockinitialisiert worden sein.

[in] CallbackData

Zeigen Sie 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 CompleteLockCallbackDataRoutine übergeben und UnlockRoutine Rückrufroutinen, die der Minifiltertreiber in einem vorherigen Aufruf von FltAllocateFileLockregistriert hat. Dieser Parameter ist optional und kann NULL sein.

Rückgabewert

FltProcessFileLock gibt eine der folgenden Werte zurück.

Rückgabecode Beschreibung
FLT_PREOP_COMPLETE Der Filter-Manager erfolgt mit dem CallbackData-, der jetzt abgeschlossen werden kann.
FLT_PREOP_DISALLOW_FASTIO Die CallbackData- stellt einen schnellen E/A-Vorgang dar, und ein Minifiltertreiber im Stapel hat die schnelle E/A für diesen Vorgang nicht zugelassen. Der Filter-Manager sendet den Vorgang nicht an Minifiltertreiber unter dem, 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, der den schnellen E/A-Vorgang nicht zugelassen hat.
FLT_PREOP_PENDING Der Sperrvorgang wurde eingestiftet.

Bemerkungen

FltProcessFileLock verarbeitet einen Dateisperrvorgang (IRP_MJ_LOCK_CONTROL). Der Sperrvorgang kann eine schnelle E/A- oder IRP-basierte Operation sein.

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

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

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

Um festzustellen, ob die CallbackData- einen schnellen E/A-Vorgang darstellt, verwenden Sie das FLT_IS_FASTIO_OPERATION Makro.

Rufen Sie FltAllocateFileLockauf, um eine neue Dateisperrstruktur zuzuweisen und zu initialisieren.

Rufen Sie FltFreeFileLockauf, um eine initialisierte FILE_LOCK Struktur frei zu geben.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP mit SP2
mindestens unterstützte Server- Windows Server 2003 mit SP1
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
DLL- Fltmgr.sys
IRQL- <= APC_LEVEL

Siehe auch

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