Condividi tramite


Funzione FltProcessFileLock (fltkernel.h)

La routine FltProcessFileLock elabora e completa un'operazione di blocco dei file.

Sintassi

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

Parametri

[in] FileLock

Puntatore alla struttura FILE_LOCK per il file. Questa struttura deve essere stata inizializzata da una chiamata precedente a FltAllocateFileLock o FltInitializeFileLock.

[in] CallbackData

Puntatore alla struttura dei dati di callback (FLT_CALLBACK_DATA) per l'operazione di IRP_MJ_LOCK_CONTROL .

[in, optional] Context

Puntatore di contesto da usare durante il completamento dell'operazione. Questo puntatore di contesto viene passato alle routine di callback CompleteLockCallbackDataRoutine e UnlockRoutine registrate dal driver minifilter in una chiamata precedente a FltAllocateFileLock. Questo parametro è facoltativo e può essere NULL.

Valore restituito

FltProcessFileLock restituisce uno dei valori seguenti.

Codice restituito Descrizione
FLT_PREOP_COMPLETE Gestione filtri viene eseguito con CallbackData, che ora può essere completato.
FLT_PREOP_DISALLOW_FASTIO CallbackData rappresenta un'operazione di I/O veloce e un driver minifilter nello stack non ha consentito l'I/O veloce da usare per questa operazione. Gestione filtri non invia l'operazione ad alcun driver minifilter al di sotto di quello che non ha consentito l'operazione. In questo caso, Gestione filtri chiama solo le routine di callback di post-esecuzione (e callback CompleteLockCallbackDataRoutine ) dei driver minifilter sopra il driver minifilter che non ha consentito l'operazione di I/O veloce.
FLT_PREOP_PENDING L'operazione di blocco è stata bloccata.

Commenti

FltProcessFileLock elabora un'operazione di blocco file (IRP_MJ_LOCK_CONTROL). L'operazione di blocco può essere un'operazione di I/O veloce o basata su IRP.

Per le operazioni di sblocco, Gestione filtri chiama la routine di callback UnlockRoutine registrata dal chiamante per la struttura FILE_LOCK in una chiamata precedente a FltAllocateFileLock.

Al termine dell'operazione di blocco, Gestione filtri chiama la routine di callback di completamento CompleteLockCallbackDataRoutine (PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) registrata dal chiamante per la struttura FILE_LOCK in una chiamata precedente a FltAllocateFileLock.

Quando il parametro CallbackData passato a FltProcessFileLock rappresenta un'operazione di I/O veloce, il callback specificato nel parametro CompleteLockCallbackDataRoutine della routine FltAllocateFileLock non viene richiamato. Solo quando l'operazione di I/O in CallbackData è un IRP e CompleteLockCallbackDataRoutine non è NULL, verrà chiamata la routine di callback.

Per determinare se CallbackData rappresenta un'operazione di I/O veloce, utilizzare la macro FLT_IS_FASTIO_OPERATION .

Per allocare e inizializzare una nuova struttura di blocco di file, chiamare FltAllocateFileLock.

Per liberare una struttura di FILE_LOCK inizializzata, chiamare FltFreeFileLock.

Requisiti

Requisito Valore
Client minimo supportato Windows XP con SP2
Server minimo supportato Windows Server 2003 con SP1
Piattaforma di destinazione Universale
Intestazione fltkernel.h (include Fltkernel.h)
Libreria FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Vedi anche

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