Función FsRtlOplockBreakToNoneEx (ntifs.h)
La rutina FsRtlOplockBreakToNoneEx interrumpe todos los bloqueos oportunistas (oplocks) inmediatamente sin tener en cuenta ninguna tecla de interbloqueo.
Sintaxis
NTSTATUS FsRtlOplockBreakToNoneEx(
[in, out] POPLOCK Oplock,
[in] PIRP Irp,
[in] ULONG Flags,
[in, optional] PVOID Context,
[in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
[in, optional] POPLOCK_FS_PREPOST_IRP PostIrpRoutine
);
Parámetros
[in, out] 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] Flags
Máscara de bits para la operación de E/S de archivo asociada. Un controlador de filtro o sistema de archivos establece bits para especificar el comportamiento de FsRtlOplockBreakToNoneEx. El parámetro Flags tiene las siguientes opciones:
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)
Especifica que se permite que una interrupción de interbloqueo continúe sin bloquear o pendiente la operación que provocó la interrupción del interbloqueo de operación. Normalmente, esta marca solo se usa si el IRP que señala el parámetro irp
[in, optional] Context
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 .
[in, optional] CompletionRoutine
Puntero a una rutina de devolución de llamada proporcionada por el autor de la llamada. Si hay una interrupción de interbloqueo en curso, se llama a esta rutina cuando se completa la interrupción. Este parámetro es opcional y se puede NULL. Si es NULL, el autor de la llamada se coloca en un estado de espera hasta que se complete la interrupción del interbloqueo de operación.
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 de
Irp
Puntero al IRP para la operación de E/S.
[in, optional] PostIrpRoutine
Puntero a una rutina de devolución de llamada proporcionada por el autor de la llamada que se va a llamar si la operación de E/S se va a poner en lápiz. Se llama a la rutina antes de que el paquete oplock lápiz el IRP. Este parámetro es opcional y se puede 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 de
Irp
Puntero al IRP para la operación de E/S.
Valor devuelto
FsRtlOplockBreakToNoneEx devuelve STATUS_SUCCESS o un código NTSTATUS adecuado, como uno de los siguientes:
Código devuelto | Descripción |
---|---|
|
Se canceló el IRP. STATUS_CANCELLED es un código de error. |
|
Se está llevando a cabo una interrupción de interbloqueo. Por lo tanto, el IRP se ha pendido. STATUS_PENDING es un código correcto. |
|
Se está llevando a cabo una interrupción de bloqueo oportunista (oplock). STATUS_OPLOCK_BREAK_IN_PROGRESS es un código correcto que |
Observaciones
Para obtener más información sobre los bloqueos oportunistas, consulte la documentación del SDK de Microsoft Windows.
Los minifiltros deben llamar a FltOplockBreakToNoneEx en lugar de FsRtlOplockBreakToNoneEx.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | La rutina FsRtlOplockBreakToNoneEx está disponible a partir de Windows 7. |
de la plataforma de destino de |
Universal |
encabezado de |
ntifs.h (incluya Ntifs.h) |
biblioteca de |
NtosKrnl.lib |
DLL de |
NtosKrnl.exe |
irQL | <= APC_LEVEL |