Macro FsRtlCheckOplock (rxprocs.h)

La rutina FsRtlCheckOplock sincroniza el IRP para una operación de E/S de archivo con el estado actual de bloqueo oportunista (oplock).

Sintaxis

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

Parámetros

A1

Puntero de bloqueo oportunista opaco para el archivo. Este puntero debe haberse inicializado mediante una llamada anterior a FsRtlInitializeOplock.

A2

Puntero al IRP para la operación de E/S.

A3

Puntero a la información de contexto definida por el autor de la llamada que se va a pasar a las rutinas de devolución de llamada a las que apuntan los parámetros CompletionRoutine y PostIrpRoutine .

A4

Puntero a una rutina de devolución de llamada proporcionada por el autor de la llamada. Si hay un salto de bloqueo oportunista en curso, se llama a esta rutina cuando se completa la interrupción. Este parámetro es opcional y puede ser NULL. Si es NULL, el autor de la llamada se coloca en un estado de espera hasta que se complete la interrupción de bloqueo oportunista.

Esta rutina se declara de la siguiente manera:

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

Esta rutina tiene los parámetros siguientes:

Contexto

Puntero de información de contexto que se pasó en el parámetro Context a FsRtlCheckOplock.

Irp

Puntero al IRP para la operación de E/S.

A5

Puntero a una rutina de devolución de llamada proporcionada por el autor de la llamada que se llamará si la operación de E/S se publica en una cola de trabajo. Este parámetro es opcional y puede ser NULL.

Esta rutina se declara de la siguiente manera:

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

Contexto

Puntero de información de contexto que se pasó en el parámetro Context a FsRtlCheckOplock.

Irp

Puntero al IRP para la operación de E/S.

Valor devuelto

None

Observaciones

FsRtlCheckOplock sincroniza el IRP para una operación de E/S con el estado de bloqueo oportunista actual de un archivo según las condiciones siguientes:

  • Si la operación de E/S hará que se interrumpa el bloqueo oportunista, se inicia la interrupción del bloqueo oportunista.
  • Si la operación de E/S no puede continuar hasta que se complete la interrupción de bloqueo oportunista, FsRtlCheckOplock devuelve STATUS_PENDING y llama a la rutina de devolución de llamada a la que apunta el parámetro PostIrpRoutine .
Si un sistema de archivos o un controlador de filtro usa bloqueos oportunistas, debe llamar a FsRtlCheckOplock desde cualquier rutina de envío para las operaciones de E/S que puedan provocar interrupciones de bloqueo oportunistas. Esta regla se aplica a los siguientes tipos de operaciones de E/S, ya que estas operaciones pueden provocar interrupciones de bloqueo 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 obtener información detallada sobre bloqueos oportunistas, consulte la documentación de Microsoft Windows SDK.

Los minifiltros deben llamar a FltCheckOplock en lugar de FsRtlCheckOplock.

Requisitos

Requisito Value
Cliente mínimo compatible Esta rutina está disponible en Microsoft Windows 2000 y versiones posteriores de sistemas operativos Windows.
Plataforma de destino Universal
Encabezado rxprocs.h (incluya FltKernel.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Consulte también

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