Partilhar via


Função FsRtlOplockBreakToNoneEx (ntifs.h)

A rotina FsRtlOplockBreakToNoneEx quebra todos os bloqueios oportunistas (oplocks) imediatamente sem considerar nenhuma chave oplock.

Sintaxe

NTSTATUS FsRtlOplockBreakToNoneEx(
  [in, out]      POPLOCK                       Oplock,
  [in]           PIRP                          Irp,
  [in]           ULONG                         Flags,
  [in, optional] PVOID                         Context,
  [in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
  [in, optional] POPLOCK_FS_PREPOST_IRP        PostIrpRoutine
);

Parâmetros

[in, out] 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] Flags

Uma máscara de bits para a operação de E/S do arquivo associado. Um sistema de arquivos ou driver de filtro define bits para especificar o comportamento de FsRtlOplockBreakToNoneEx. O parâmetro sinalizadores de tem as seguintes opções:

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)

Especifica para permitir que uma quebra de oplock prossiga sem bloquear ou aguardar a operação que causou a interrupção do oplock. Normalmente, esse sinalizador só será usado se o IRP que o parâmetro Irp apontar para declarar uma operação de IRP_MJ_CREATE.

[in, optional] Context

Um ponteiro para informações de contexto definidas pelo chamador a serem passadas para as rotinas de retorno de chamada para as quais os parâmetros CompletionRoutine e PostIrpRoutine apontam.

[in, optional] CompletionRoutine

Um ponteiro para uma rotina de retorno de chamada fornecida pelo chamador. Se uma quebra de oplock estiver em andamento, essa rotina será chamada quando a interrupção for concluída. Esse parâmetro é opcional e pode ser NULL. Se for NULL, o chamador será colocado em um estado de espera até que a interrupção do oplock seja concluída.

Essa rotina é declarada da seguinte maneira:

typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
      IN PVOID Context,
      IN PIRP Irp
      );

Essa rotina tem os seguintes parâmetros:

Contexto

Um ponteiro de informações de contexto que foi passado no parâmetro Context para FsRtlOplockBreakToNoneEx.

Irp

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

[in, optional] PostIrpRoutine

Um ponteiro para uma rotina de retorno de chamada fornecida pelo chamador a ser chamada se a operação de E/S estiver pendente. A rotina é chamada antes do pacote oplock aguardar o IRP. Esse parâmetro é opcional e pode ser NULL.

Essa rotina é declarada da seguinte maneira:

typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
      IN PVOID Context,
      IN PIRP Irp
      );

Contexto

Um ponteiro de informações de contexto que foi passado no parâmetro Context para FsRtlOplockBreakToNoneEx.

Irp

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

Valor de retorno

FsRtlOplockBreakToNoneEx retorna STATUS_SUCCESS ou um código NTSTATUS apropriado, como um dos seguintes:

Código de retorno Descrição
STATUS_CANCELLED
O IRP foi cancelado. STATUS_CANCELLED é um código de erro.
STATUS_PENDING
Uma quebra de oplock está em andamento. Portanto, o IRP estava pendente. STATUS_PENDING é um código de sucesso.
STATUS_OPLOCK_BREAK_IN_PROGRESS
Uma quebra de bloqueio oportunista (oplock) está em andamento. STATUS_OPLOCK_BREAK_IN_PROGRESS é um código de êxito que FsRtlOplockBreakToNoneEx retorna se o conjunto de chamadas OPLOCK_FLAG_COMPLETE_IF_OPLOCKED no parâmetro sinalizadores e um oplock precisar ser interrompido.

Observações

Para obter mais informações sobre bloqueios oportunistas, consulte a documentação do SDK do Microsoft Windows.

Os minifiltros devem chamar FltOplockBreakToNoneEx em vez de FsRtlOplockBreakToNoneEx .

Requisitos

Requisito Valor
de cliente com suporte mínimo A rotina FsRtlOplockBreakToNoneEx está disponível a partir do Windows 7.
da Plataforma de Destino Universal
cabeçalho ntifs.h (inclua Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Consulte também

FltOplockBreakToNoneEx

FsRtlInitializeOplock