Função FltOplockFsctrlEx (fltkernel.h)

A rotina FltOplockFsctrlEx executa várias operações de bloqueio oportunista (oplock) em nome de um driver de minifiltro.

Sintaxe

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

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.

[in] Flags

Uma máscara de bits para as operações oplock associadas. Um driver de minifiltro define bits para especificar o comportamento de FltOplockFsctrlEx. O parâmetro Flags tem as seguintes opções:

Valor Significado
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) O sistema de arquivos verificou que todas as chaves oplock em todos os identificadores que estão abertos atualmente correspondem. Ao especificar esse sinalizador, você permite que o pacote oplock conceda um oplock de nível RW ou RWH quando houver mais de um identificador aberto para o arquivo. Para obter mais informações sobre tipos oplock, consulte Visão geral do Oplock.

Retornar valor

FltOplockFsctrlEx 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, FltOplockFsctrlEx retornará FLT_PREOP_COMPLETE.

Comentários

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

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, FltOplockFsctrlEx 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
Cliente mínimo com suporte Essa rotina está disponível a partir do Windows 8.
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

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplockEx

FltInitializeOplock

FsRtlOplockFsctrlEx

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL