FSCTL_OPBATCH_ACK_CLOSE_PENDING código de controle

O código de controle FSCTL_OPBATCH_ACK_CLOSE_PENDING responde à notificação de que um bloqueio oportunista exclusivo (nível 1, lote ou filtro) em um arquivo foi quebrado. Um aplicativo cliente envia esse código de controle para indicar que ele reconhece a quebra de oplock e está prestes a fechar o identificador de arquivo.

Para uma quebra de oplock de lote ou filtro, o chamador deve fechar seu identificador de arquivo depois de enviar esse código de controle. Caso contrário, o sistema bloqueará a espera para que o identificador de arquivo seja fechado.

Esse código de controle não se destina a ser usado com oplocks de nível 1. No entanto, para uma quebra de oplock de nível 1, o sistema trata esse código de controle como uma confirmação completa da interrupção e o chamador não é necessário para fechar o identificador de arquivo.

Esse código de controle raramente é usado. Quando um aplicativo cliente é notificado de uma quebra de oplock para um arquivo e fecha seu identificador para o arquivo, o sistema trata o identificador de arquivo como uma confirmação completa da quebra de oplock. Portanto, nunca é necessário enviar esse código de controle.

Para processar esse código de controle, um minifiltro chama FltOplockFsctrl com os parâmetros a seguir. Um sistema de arquivos ou driver de filtro herdado chama FsRtlOplockFsctrl.

Para obter mais informações sobre bloqueio oportunista e sobre o código de controle FSCTL_OPBATCH_ACK_CLOSE_PENDING, consulte a documentação do SDK do Microsoft Windows.

Parâmetros

  • Oplock: ponteiro de objeto oplock oplock para o arquivo.

  • CallbackData: somente FltOplockFsctrl . Estrutura de dados de retorno de chamada (FLT_CALLBACK_DATA) para uma solicitação FSCTL IRP_MJ_FILE_SYSTEM_CONTROL. O parâmetro FsControlCode para a operação deve ser FSCTL_OPBATCH_ACK_CLOSE_PENDING.

  • Irp: somente FsRtlOplockFsctrl . IRP para uma solicitação FSCTL IRP_MJ_FILE_SYSTEM_CONTROL. O parâmetro FsControlCode para a operação deve ser FSCTL_OPBATCH_ACK_CLOSE_PENDING.

  • OpenCount: não usado com esta operação; definido como zero.

Bloco de status

FltOplockFsctrl sempre retorna FLT_PREOP_COMPLETE para essa operação.

FsRtlOplockFsctrl retorna um dos seguintes valores NTSTATUS para esta operação:

Código Significado
STATUS_SUCCESS O oplock mantido por esse identificador estava no processo de ser quebrado.
STATUS_INVALID_OPLOCK_PROTOCOL Nenhum oplock foi mantido por esse identificador ou a quebra de oplock não está em andamento no momento. Este é um código de erro.

Requisitos

Tipo de Requisito Requisito
parâmetro Ntifs.h (inclua Ntifs.h ou Fltkernel.h)

Confira também

FLT_CALLBACK_DATA

FLT_PARAMETERS para IRP_MJ_FILE_SYSTEM_CONTROL

FltOplockFsctrl

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FsRtlOplockFsctrl

IRP_MJ_FILE_SYSTEM_CONTROL