Função FsRtlUpperOplockFsctrl (ntifs.h)

A rotina FsRtlUpperOplockFsctrl processa solicitações e confirmações oportunistas de bloqueio (oplock) para sistemas de arquivos secundários ou em camadas. O sistema de arquivos superior envia o estado do oplock mantido no sistema de arquivos inferior. FsRtlUpperOplockFsctrl determinará se deseja conceder ou negar o oplock do sistema de arquivos superior.

Sintaxe

NTSTATUS FsRtlUpperOplockFsctrl(
  [in] POPLOCK Oplock,
  [in] PIRP    Irp,
  [in] ULONG   OpenCount,
  [in] ULONG   LowerOplockState,
  [in] ULONG   Flags
);

Parâmetros

[in] Oplock

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

[in] Irp

Um ponteiro para o IRP para a operação de E/S.

[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 mais informações sobre tipos oplock, consulte Tipos de Oplocks.

[in] LowerOplockState

O valor do nível de oplock inferior mantido pelo sistema de arquivos superior. Esta é uma combinação OR bit a bit do seguinte:

Valor Significado
OPLOCK_LEVEL_CACHE_READ Indica um tipo de leitura de oplock (R).
OPLOCK_LEVEL_CACHE_WRITE Indica um tipo de Gravação oplock (W).
OPLOCK_LEVEL_CACHE_HANDLE Indica um tipo de identificador de oplock (H).

[in] Flags

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 FsRtlUpperOplockFsctrl. 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 qualquer identificador aberto no momento 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.

Retornar valor

FsRtlUpperOplockFsctrl retorna um dos seguintes valores NTSTATUS:

Código de retorno Descrição
STATUS_SUCCESS Para uma solicitação de IRP_MJ_CREATE, STATUS_SUCCESS indica que o bloqueio oportunista de filtro solicitado (oplock) foi concedido. Para uma operação FSCTL, o significado de STATUS_SUCCESS depende do código FSCTL. Para obter mais informações, consulte a seção Comentários em FsRtlOplockFsctrlEx.
STATUS_CANCELLED A operação de E/S foi cancelada. STATUS_CANCELLED é um código de erro.
STATUS_INVALID_PARAMETER O código FSCTL para a operação de E/S não era uma solicitação oplock de valores válida. Os tipos de solicitação válidos são listados na seção Comentários de FsRtlOplockFsctrlEx. STATUS_INVALID_PARAMETER é um código de erro.
STATUS_OPLOCK_NOT_GRANTED O oplock não pôde ser concedido. O nível do oplock do sistema de arquivos superior solicitado não é válido para o oplock concedido para o sistema de arquivos inferior. STATUS_OPLOCK_NOT_GRANTED é um código de erro.
STATUS_PENDING Usado somente para operações FSCTL. O significado de STATUS_PENDING depende do código FSCTL. Para obter mais informações, consulte a seção Comentários em FsRtlOplockFsctrlEx. STATUS_PENDING é um código de êxito.
STATUS_CANNOT_GRANT_REQUESTED_OPLOCK Uma confirmação de oplock para um novo oplock não é permitida. O nível do sistema de arquivos superior de bloqueio não é válido para o oplock do sistema de arquivos inferior.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8.1
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL

Confira também

FsRtlCheckUpperOplock

FsRtlOplockFsctrlEx