Função FltOplockFsctrl (fltkernel.h)

FltOplockFsctrl executa várias operações oportunistas de bloqueio (oplock) em nome de um driver de minifiltro.

Sintaxe

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrl(
  [in] POPLOCK            Oplock,
  [in] PFLT_CALLBACK_DATA CallbackData,
  [in] ULONG              OpenCount
);

Parâmetros

[in] Oplock

Ponteiro oplock oplock opaco para o arquivo. Esse ponteiro deve ter sido inicializado por uma chamada anterior para FltInitializeOplock.

[in] CallbackData

Ponteiro para a estrutura de FLT_CALLBACK_DATA para a operação de E/S. Esse parâmetro é necessário e não pode ser NULL.

[in] OpenCount

Número de identificadores de usuário para o arquivo, se um oplock exclusivo estiver sendo solicitado. Definir um valor diferente de zero para uma solicitação oplock de nível 2, R ou RH indica que há bloqueios de intervalo de bytes no arquivo. Para obter informações sobre tipos oplock, consulte Visão geral do Oplock.

Retornar valor

FltOplockFsctrl retorna FLT_PREOP_PENDING para algumas operações FSCTL. Para obter mais informações, consulte as páginas de referência para os códigos FSCTL listados na seção Comentários a seguir. Caso contrário, FltOplockFsctrl retornará FLT_PREOP_COMPLETE.

Comentários

Um driver de minifiltro chama FltOplockFsctrl para executar várias operações de bloqueio oportunistas para uma operação de E/S de controle do sistema de arquivos ou de criação.

A estrutura FLT_CALLBACK_DATA apontada pelo parâmetro CallbackData deve representar uma operação de IRP_MJ_FILE_SYSTEM_CONTROL ou IRP_MJ_CREATE baseada em IRP.

Se a operação for uma operação IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrl poderá ser usado com os seguintes códigos FSCTL:

O código FSCTL é definido no membro FsControlCode da estrutura FLT_PARAMETERS para a operação. Para obter mais informações sobre FsControlCode e outros parâmetros de IRP_MJ_FILE_SYSTEM_CONTROL, consulte FLT_PARAMETERS para IRP_MJ_FILE_SYSTEM_CONTROL.

Para obter mais informações sobre bloqueios oportunistas, consulte a documentação do SDK do Microsoft Windows.

Se a operação for uma solicitação IRP_MJ_CREATE , FltOplockFsctrl poderá ser usado para solicitar um bloqueio oportunista de filtro pendente se todas as seguintes condições forem verdadeiras:

  • O valor do parâmetro OpenCount deve ser 1.
  • O valor do parâmetro DesiredAccess para a solicitação IRP_MJ_CREATE é FILE_READ_ATTRIBUTES. Esse parâmetro é definido no membro SecurityContext da estrutura FLT_PARAMETERS da operação. Para obter mais informações, consulte FLT_PARAMETERS para IRP_MJ_CREATE.
  • O valor do parâmetro ShareAccess para a operação de IRP_MJ_CREATE é FILE_SHARE_READ, FILE_SHARE_WRITE ou FILE_SHARE_DELETE. Esse parâmetro é definido no membro ShareAccess da estrutura FLT_PARAMETERS para a operação. Para obter mais informações, consulte FLT_PARAMETERS para IRP_MJ_CREATE.

Filtros e sistemas de arquivos que chamam essa função devem sincronizar chamadas no pacote oplock fornecido pelo sistema. Consulte Sincronização do Oplock para obter mais informações.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua Fltkernel.h)
Biblioteca FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Confira também

FLT_CALLBACK_DATA

FLT_PARAMETERS para IRP_MJ_CREATE

FLT_PARAMETERS para IRP_MJ_FILE_SYSTEM_CONTROL

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplock

FltCurrentBatchOplock

FltInitializeOplock

FltOplockIsFastIoPossible

FltUninitializeOplock

FsRtlOplockFsctrl

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL