Función FltProcessFileLock (fltkernel.h)
La rutina FltProcessFileLock procesa y completa una operación de bloqueo de archivos.
Sintaxis
FLT_PREOP_CALLBACK_STATUS FLTAPI FltProcessFileLock(
[in] PFILE_LOCK FileLock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in, optional] PVOID Context
);
Parámetros
[in] FileLock
Puntero a la estructura FILE_LOCK del archivo. Esta estructura debe haberse inicializado mediante una llamada anterior a FltAllocateFileLock o FltInitializeFileLock.
[in] CallbackData
Puntero a la estructura de datos de devolución de llamada (FLT_CALLBACK_DATA) para la operación de IRP_MJ_LOCK_CONTROL .
[in, optional] Context
Puntero de contexto que se va a usar al completar la operación. Este puntero de contexto se pasa a las rutinas de devolución de llamada CompleteLockCallbackDataRoutine y UnlockRoutine que el controlador de minifiltro registró en una llamada anterior a FltAllocateFileLock. Este parámetro es opcional y puede ser NULL.
Valor devuelto
FltProcessFileLock devuelve una de las siguientes opciones.
Código devuelto | Descripción |
---|---|
FLT_PREOP_COMPLETE | El Administrador de filtros se realiza con CallbackData, que ahora se puede completar. |
FLT_PREOP_DISALLOW_FASTIO | CallbackData representa una operación de E/S rápida y un controlador de minifiltro en la pila no ha permitido que se use la E/S rápida para esta operación. El Administrador de filtros no envía la operación a ningún controlador de minifiltro por debajo del que deniegan la operación. En este caso, el Administrador de filtros solo llama a las rutinas de devolución de llamada de postoperación (y CompleteLockCallbackDataRoutine ) de los controladores de minifiltro por encima del controlador de minifiltro que no permitió la operación de E/S rápida. |
FLT_PREOP_PENDING | La operación de bloqueo se ha bloqueado. |
Comentarios
FltProcessFileLock procesa una operación de bloqueo de archivos (IRP_MJ_LOCK_CONTROL). La operación de bloqueo puede ser una operación rápida basada en E/S o IRP.
Para las operaciones de desbloqueo, el Administrador de filtros llama a la rutina de devolución de llamada UnlockRoutine que el autor de la llamada registró para la estructura de FILE_LOCK en una llamada anterior a FltAllocateFileLock.
Cuando se completa la operación de bloqueo, el Administrador de filtros llama a la rutina de devolución de llamada de finalización CompleteLockCallbackDataRoutine (PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) que el autor de la llamada registró para la estructura de FILE_LOCK en una llamada anterior a FltAllocateFileLock.
Cuando el parámetro CallbackData pasado a FltProcessFileLock representa una operación de E/S rápida, no se invoca la devolución de llamada especificada en el parámetro CompleteLockCallbackDataRoutine de la rutina FltAllocateFileLock . Solo cuando la operación de E/S en CallbackData es un IRP y CompleteLockCallbackDataRoutine no es NULL, se llamará a la rutina de devolución de llamada.
Para determinar si CallbackData representa una operación de E/S rápida, use la macro FLT_IS_FASTIO_OPERATION .
Para asignar e inicializar una nueva estructura de bloqueo de archivos, llame a FltAllocateFileLock.
Para liberar una estructura de FILE_LOCK inicializada, llame a FltFreeFileLock.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP con SP2 |
Servidor mínimo compatible | Windows Server 2003 con SP1 |
Plataforma de destino | Universal |
Encabezado | fltkernel.h (incluya Fltkernel.h) |
Library | FltMgr.lib |
Archivo DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
Consulte también
PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE
[PUNLOCK_ROUTINE] (.. /ntifs/nc-ntifs-punlock_routine.md