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
PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE
[PUNLOCK_ROUTINE](.. /ntifs/nc-ntifs-punlock_routine.md