Compartir a través de


Función FsRtlUpperOplockFsctrl (ntifs.h)

El FsRtlUpperOplockFsctrl rutina procesa solicitudes de bloqueo oportunista (oplock) y confirmaciones 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 interbloqueo 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 opaco 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. Si se establece un valor distinto de cero para una solicitud de interbloqueo de nivel 2, R o RH, se indica que hay bloqueos de intervalo de bytes en el archivo. Para obtener más información sobre los tipos de interbloqueo, 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 interbloqueo (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 controlador de filtro o sistema de archivos 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 interbloqueo 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 aparecen 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 Valor
cliente mínimo admitido Windows 8.1
de la plataforma de destino de Universal
encabezado de ntifs.h (incluya Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL IRQL <= APC_LEVEL

Consulte también

FsRtlCheckUpperOplock

FsRtlOplockFsctrlEx