Compartilhar via


Função FsRtlUpperOplockFsctrl (ntifs.h)

O FsRtlUpperOplockFsctrl processos de rotina de solicitações de bloqueio oportunista (oplock) e confirmações 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 sinalizadores de 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.

Valor de retorno

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 do FsRtlOplockFsctrlEx. STATUS_INVALID_PARAMETER é um código de erro.
STATUS_OPLOCK_NOT_GRANTED Não foi possível conceder o oplock. 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 sucesso.
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
de cliente com suporte mínimo Windows 8.1
da Plataforma de Destino Universal
cabeçalho ntifs.h (inclua Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL

Consulte também

FsRtlCheckUpperOplock

FsRtlOplockFsctrlEx