Condividi tramite


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

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