Macro FsRtlCheckOplock (rxprocs.h)

A rotina FsRtlCheckOplock sincroniza o IRP para uma operação de E/S de arquivo com o estado atual de bloqueio oportunista (oplock) do arquivo.

Sintaxe

void FsRtlCheckOplock(
   A1,
   A2,
   A3,
   A4,
   A5
);

Parâmetros

A1

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

A2

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

A3

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.

A4

Um ponteiro para uma rotina de retorno de chamada fornecida pelo chamador. Se uma quebra de bloqueio oportunista 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 quebra de bloqueio oportunista 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 FsRtlCheckOplock.

Irp

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

A5

Um ponteiro para uma rotina de retorno de chamada fornecida pelo chamador a ser chamada se a operação de E/S for postada em uma fila de trabalho. 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 FsRtlCheckOplock.

Irp

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

Retornar valor

Nenhum

Comentários

FsRtlCheckOplock sincroniza o IRP para uma operação de E/S com o estado de bloqueio oportunista atual de um arquivo de acordo com as seguintes condições:

  • Se a operação de E/S fizer com que o bloqueio oportunista interrompa, a quebra de bloqueio oportunista será iniciada.
  • Se a operação de E/S não puder continuar até que a quebra de bloqueio oportunista seja concluída, FsRtlCheckOplock retornará STATUS_PENDING e chamará a rotina de retorno de chamada para a qual o parâmetro PostIrpRoutine aponta.
Se um sistema de arquivos ou driver de filtro usar bloqueios oportunistas, ele deverá chamar FsRtlCheckOplock de qualquer rotina de expedição para operações de E/S que possam causar quebras de bloqueio oportunistas. Essa regra se aplica aos seguintes tipos de operações de E/S, pois essas operações podem causar quebras de bloqueio oportunistas:

IRP_MJ_CLEANUP

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL

IRP_MJ_FLUSH_BUFFERS

IRP_MJ_LOCK_CONTROL

IRP_MJ_READ

IRP_MJ_SET_INFORMATION

IRP_MJ_WRITE

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

Os minifiltros devem chamar FltCheckOplock em vez de FsRtlCheckOplock.

Requisitos

Requisito Valor
Cliente mínimo com suporte Essa rotina está disponível no Microsoft Windows 2000 e versões posteriores de sistemas operacionais Windows.
Plataforma de Destino Universal
Cabeçalho rxprocs.h (inclua FltKernel.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Confira também

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplock

FsRtlCurrentBatchOplock

FsRtlInitializeOplock

FsRtlOplockFsctrl

FsRtlOplockIsFastIoPossible

FsRtlUninitializeOplock