código de controle FSCTL_REQUEST_OPLOCK

O código de controle FSCTL_REQUEST_OPLOCK solicita um bloqueio oportunista (oplock) em um arquivo ou reconhece que ocorreu uma interrupção de oplock.

Para obter mais informações sobre bloqueios oportunistas, consulte Bloqueios oportunistas na documentação da Área de Trabalho do Windows. Para obter mais informações sobre controles OPLOCK no modo de usuário, consulte Códigos de controle de gerenciamento de arquivos na documentação da Área de Trabalho do Windows.

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

Parâmetros

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

  • Irp: um ponteiro para o IRP para uma solicitação FSCTL IRP_MJ_FILE_SYSTEM_CONTROL. O parâmetro FsControlCode para a operação deve ser FSCTL_REQUEST_OPLOCK.

  • OpenCount: o número de identificadores de usuário para o arquivo se a solicitação for para um oplock exclusivo. Se a solicitação for para um oplock que pode ser compartilhado, OpenCount será zero se nenhum bloqueio de intervalo de bytes existir no arquivo. Caso contrário, OpenCount não será zero. O chamador pode chamar a rotina FsRtlOplockIsSharedRequest no IRP para determinar se a solicitação é para um oplock que pode ser compartilhado.

  • Sinalizadores: uma máscara de bits para as operações oplock associadas. Um sistema de arquivos ou driver de filtro define bits para especificar o comportamento de FsRtlOplockFsctrlEx. O parâmetro Flags tem as seguintes opções:

    Valor Significado
    OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) Especifica que o sistema de arquivos verificou que todas as chaves de bloqueio oportunistas correspondem a qualquer identificador que esteja aberto no momento. Ao especificar esse sinalizador, o pacote oplock pode conceder 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.

Bloco de status

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

Código Significado
STATUS_PENDING O oplock foi concedido. Este é um código de êxito.
STATUS_CANCELLED O IRP foi cancelado antes da conclusão da operação de FSCTL_REQUEST_OPLOCK. Este é um código de erro.
STATUS_OPLOCK_NOT_GRANTED Não foi possível conceder o oplock. Este é um código de erro.

Requisitos

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

Confira também

FsRtlOplockFsctrlEx

FsRtlOplockIsSharedRequest

IRP_MJ_FILE_SYSTEM_CONTROL