Compartilhar via


Função FltProcessFileLock (fltkernel.h)

O FltProcessFileLock processos de rotina e conclui uma operação de bloqueio de arquivo.

Sintaxe

FLT_PREOP_CALLBACK_STATUS FLTAPI FltProcessFileLock(
  [in]           PFILE_LOCK         FileLock,
  [in]           PFLT_CALLBACK_DATA CallbackData,
  [in, optional] PVOID              Context
);

Parâmetros

[in] FileLock

Ponteiro para a estrutura FILE_LOCK do arquivo. Essa estrutura deve ter sido inicializada por uma chamada anterior para FltAllocateFileLock ou FltInitializeFileLock.

[in] CallbackData

Ponteiro para a estrutura de dados de retorno de chamada (FLT_CALLBACK_DATA) para a operação de IRP_MJ_LOCK_CONTROL.

[in, optional] Context

Ponteiro de contexto a ser usado ao concluir a operação. Esse ponteiro de contexto é passado para as rotinas de retorno de chamada CompleteLockCallbackDataRoutine e UnlockRoutine que o driver de minifiltro registrou em uma chamada anterior para FltAllocateFileLock. Esse parâmetro é opcional e pode ser NULL.

Valor de retorno

fltProcessFileLock retorna um dos seguintes.

Código de retorno Descrição
FLT_PREOP_COMPLETE O Gerenciador de Filtros é feito com oCallbackData, que agora pode ser concluído.
FLT_PREOP_DISALLOW_FASTIO O CallbackData representa uma operação de E/S rápida e um driver de minifiltro na pilha não permitiu que a E/S rápida fosse usada para esta operação. O Gerenciador de Filtros não envia a operação para nenhum drivers de minifiltro abaixo daquele que não permitiu a operação. Nesse caso, o Gerenciador de Filtros chama apenas as rotinas de retorno de chamada de postoperation (e CompleteLockCallbackDataRoutine retornos de chamada) dos drivers de minifiltro acima do driver de minifiltro que não permitiu a operação de E/S rápida.
FLT_PREOP_PENDING A operação de bloqueio foi pendente.

Observações

FltProcessFileLock processa uma operação de bloqueio de arquivo (IRP_MJ_LOCK_CONTROL). A operação de bloqueio pode ser uma operação rápida baseada em E/S ou IRP.

Para operações de desbloqueio, o Gerenciador de Filtros chama a rotina de retorno de chamada do UnlockRoutine que o chamador registrou para a estrutura de FILE_LOCK em uma chamada anterior para FltAllocateFileLock.

Quando a operação de bloqueio é concluída, o Gerenciador de Filtros chama a rotina de retorno de chamada de conclusão CompleteLockCallbackDataRoutine (PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) que o chamador registrou para a estrutura de FILE_LOCK em uma chamada anterior para FltAllocateFileLock.

Quando o parâmetro CallbackData passado para FltProcessFileLock representa uma operação de E/S rápida, o retorno de chamada especificado no parâmetro CompleteLockCallbackDataRoutine da rotina FltAllocateFileLock não é invocado. Somente quando a operação de E/S no CallbackData for um IRP e CompleteLockCallbackDataRoutine não for NULL, a rotina de retorno de chamada será chamada.

Para determinar se o CallbackData representa uma operação de E/S rápida, use a macro FLT_IS_FASTIO_OPERATION.

Para alocar e inicializar uma nova estrutura de bloqueio de arquivo, chame FltAllocateFileLock.

Para liberar uma estrutura de FILE_LOCK inicializada, chame FltFreeFileLock .

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP com SP2
servidor com suporte mínimo Windows Server 2003 com SP1
da Plataforma de Destino Universal
cabeçalho fltkernel.h (inclua Fltkernel.h)
biblioteca FltMgr.lib
de DLL Fltmgr.sys
IRQL <= APC_LEVEL

Consulte também

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