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