Función FsRtlUpperOplockFsctrl (ntifs.h)

La rutina FsRtlUpperOplockFsctrl procesa solicitudes y confirmaciones de bloqueo oportunista (oplock) para sistemas de archivos secundarios o en capas. El sistema de archivos superior envía el estado del interbloqueo mantenido en el sistema de archivos inferior. FsRtlUpperOplockFsctrl determinará si se debe conceder o denegar el oplock del sistema de archivos superior.

Sintaxis

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

Parámetros

[in] Oplock

Puntero oplock oppac para el archivo. Este puntero debe haberse inicializado mediante una llamada anterior a FsRtlInitializeOplock.

[in] Irp

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

[in] OpenCount

Número de identificadores de usuario para el archivo, si se solicita un interbloqueo exclusivo. Establecer un valor distinto de cero para una solicitud de interbloqueo de nivel 2, R o RH indica que hay bloqueos de intervalo de bytes en el archivo. Para obtener más información sobre los tipos de oplock, vea Tipos de interbloqueos.

[in] LowerOplockState

Valor del nivel de interbloqueo inferior mantenido por el sistema de archivos superior. Esta combinación or bit a bit de lo siguiente:

Valor Significado
OPLOCK_LEVEL_CACHE_READ Indica un tipo de lectura de oplock (R).
OPLOCK_LEVEL_CACHE_WRITE Indica un tipo de escritura de interbloqueo (W).
OPLOCK_LEVEL_CACHE_HANDLE Indica un tipo de identificador de interbloqueo (H).

[in] Flags

Máscara de bits para las operaciones de interbloqueo asociadas. Un sistema de archivos o un controlador de filtro establece bits para especificar el comportamiento de FsRtlUpperOplockFsctrl. El parámetro Flags tiene las siguientes opciones:

Valor Significado
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) El sistema de archivos comprobó que todas las claves de interbloqueo de cualquier identificador abierto coinciden actualmente. Al especificar esta marca, se permite que el paquete de oplock conceda un interbloqueo de nivel RW o RWH cuando exista más de un identificador abierto para el archivo.

Valor devuelto

FsRtlUpperOplockFsctrl devuelve uno de los siguientes valores NTSTATUS:

Código devuelto Descripción
STATUS_SUCCESS Para una solicitud de IRP_MJ_CREATE, STATUS_SUCCESS indica que se concedió el bloqueo oportunista de filtro solicitado (oplock). Para una operación FSCTL, el significado de STATUS_SUCCESS depende del código FSCTL. Para obtener más información, vea la sección Comentarios de FsRtlOplockFsctrlEx.
STATUS_CANCELLED Se canceló la operación de E/S. STATUS_CANCELLED es un código de error.
STATUS_INVALID_PARAMETER El código FSCTL para la operación de E/S no era una solicitud de interbloqueo de valores válidos. Los tipos de solicitud válidos se enumeran en la sección Comentarios de FsRtlOplockFsctrlEx. STATUS_INVALID_PARAMETER es un código de error.
STATUS_OPLOCK_NOT_GRANTED No se pudo conceder el interbloqueo. El nivel del oplock del sistema de archivos superior solicitado no es válido para el oplock concedido para el sistema de archivos inferior. STATUS_OPLOCK_NOT_GRANTED es un código de error.
STATUS_PENDING Solo se usa para las operaciones FSCTL. El significado de STATUS_PENDING depende del código FSCTL. Para obtener más información, vea la sección Comentarios de FsRtlOplockFsctrlEx. STATUS_PENDING es un código correcto.
STATUS_CANNOT_GRANT_REQUESTED_OPLOCK No se permite una confirmación de interbloqueo para un nuevo interbloqueo. El nivel del sistema de archivos superior del bloqueo no es válido para el oplock del sistema de archivos inferior.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8.1
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL

Consulte también

FsRtlCheckUpperOplock

FsRtlOplockFsctrlEx