Funzione FltProcessFileLock (fltkernel.h)
Il FltProcessFileLock routine elabora e completa un'operazione di blocco 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 alla CompleteLockCallbackDataRoutine e UnlockRoutine routine di callback registrate dal driver minifilter registrato 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 il CallbackData, che ora può essere completato. |
FLT_PREOP_DISALLOW_FASTIO | Il CallbackData rappresenta un'operazione di I/O veloce e un driver minifiltro nello stack non ha consentito l'I/O veloce da usare per questa operazione. Gestione filtri non invia l'operazione ad alcun driver minifiltro al di sotto di quello che non ha consentito l'operazione. In questo caso, Gestione filtri chiama solo le routine di callback postoperation (e CompleteLockCallbackDataRoutine callback) 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. |
Osservazioni
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) che il chiamante ha registrato 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 in CompleteLockCallbackDataRoutine parametro 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 il CallbackData rappresenta un'operazione di I/O veloce, utilizzare la macro FLT_IS_FASTIO_OPERATION.
Per allocare e inizializzare una nuova struttura di blocco file, chiamare FltAllocateFileLock.
Per liberare una struttura di FILE_LOCK inizializzata, chiamare FltFreeFileLock.
Fabbisogno
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 |
Vedere anche
PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE
[PUNLOCK_ROUTINE](.. /ntifs/nc-ntifs-punlock_routine.md