Compartir a través de


Función FltProcessFileLock (fltkernel.h)

El FltProcessFileLock procesos rutinarios 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 al completeLockCallbackDataRoutine y unlockRoutine rutinas de devolución de llamada 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 el CallbackData, que ahora se puede completar.
FLT_PREOP_DISALLOW_FASTIO El 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 no permitió 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 devoluciones de llamada) de los controladores de minifiltro por encima del controlador de minifiltro que no permitió la operación rápida de E/S.
FLT_PREOP_PENDING La operación de bloqueo se ha pendido.

Observaciones

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 UnlockRou tine que el llamador 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 CompleteLockCallbackDataRoutine (PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) rutina de devolución de llamada de finalización 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 CompleteLockCallbackDataRoutine parámetro 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 el 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 Valor
cliente mínimo admitido Windows XP con SP2
servidor mínimo admitido Windows Server 2003 con SP1
de la plataforma de destino de Universal
encabezado de fltkernel.h (incluya Fltkernel.h)
biblioteca de FltMgr.lib
DLL de 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