Função FltProcessFileLock (fltkernel.h)
A rotina FltProcessFileLock processa 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.
Retornar valor
FltProcessFileLock retorna um dos seguintes.
Código de retorno | Descrição |
---|---|
FLT_PREOP_COMPLETE | O Gerenciador de Filtros é feito com CallbackData, 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 essa operação. O Gerenciador de Filtros não envia a operação para nenhum driver 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 postoperation (e retornos de chamada CompleteLockCallbackDataRoutine ) 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. |
Comentários
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 UnlockRoutine que o chamador registrou para a estrutura 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 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 em CallbackData for um IRP e CompleteLockCallbackDataRoutine não for NULL, a rotina de retorno de chamada será chamada.
Para determinar se 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 |
---|---|
Cliente mínimo com suporte | Windows XP com SP2 |
Servidor mínimo com suporte | Windows Server 2003 com SP1 |
Plataforma de Destino | Universal |
Cabeçalho | fltkernel.h (inclua Fltkernel.h) |
Biblioteca | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
Confira também
PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE
[PUNLOCK_ROUTINE] (.. /ntifs/nc-ntifs-punlock_routine.md