Share via


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

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