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 |