Función FltOplockFsctrl (fltkernel.h)
FltOplockFsctrl realiza varias operaciones de bloqueo oportunista (oplock) en nombre de un controlador de minifiltro.
Sintaxis
FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrl(
[in] POPLOCK Oplock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in] ULONG OpenCount
);
Parámetros
[in] Oplock
Puntero oplock oppac para el archivo. Este puntero debe haberse inicializado mediante una llamada anterior a FltInitializeOplock.
[in] CallbackData
Puntero a la estructura de FLT_CALLBACK_DATA para la operación de E/S. Este parámetro es obligatorio y no puede ser NULL.
[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 información sobre los tipos de interbloqueo, consulte Información general sobre Oplock.
Valor devuelto
FltOplockFsctrl devuelve FLT_PREOP_PENDING para algunas operaciones FSCTL. Para obtener más información, vea las páginas de referencia de los códigos FSCTL enumerados en la siguiente sección Comentarios. De lo contrario, FltOplockFsctrl devuelve FLT_PREOP_COMPLETE.
Comentarios
Un controlador de minifiltro llama a FltOplockFsctrl para realizar varias operaciones de bloqueo oportunistas para una operación de E/S de control de sistema de archivos o de creación.
La estructura de FLT_CALLBACK_DATA a la que apunta el parámetro CallbackData debe representar una operación de IRP_MJ_FILE_SYSTEM_CONTROL o IRP_MJ_CREATE basada en IRP.
Si la operación es una operación de IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrl se puede usar con los siguientes códigos FSCTL:
- FSCTL_OPBATCH_ACK_CLOSE_PENDING
- FSCTL_OPLOCK_BREAK_ACK_NO_2
- FSCTL_OPLOCK_BREAK_ACKNOWLEDGE
- FSCTL_OPLOCK_BREAK_NOTIFY
- FSCTL_REQUEST_BATCH_OPLOCK
- FSCTL_REQUEST_FILTER_OPLOCK
- FSCTL_REQUEST_OPLOCK_LEVEL_1
- FSCTL_REQUEST_OPLOCK_LEVEL_2
El código FSCTL se establece en el miembro FsControlCode de la estructura FLT_PARAMETERS para la operación. Para obtener más información sobre FsControlCode y otros parámetros de IRP_MJ_FILE_SYSTEM_CONTROL, consulte FLT_PARAMETERS para IRP_MJ_FILE_SYSTEM_CONTROL.
Para obtener más información sobre bloqueos oportunistas, consulte la documentación de Microsoft Windows SDK.
Si la operación es una solicitud de IRP_MJ_CREATE , FltOplockFsctrl se puede usar para solicitar un bloqueo oportunista de filtro pendiente si se cumplen todas las condiciones siguientes:
- El valor del parámetro OpenCount debe ser 1.
- El valor del parámetro DesiredAccess para la solicitud de IRP_MJ_CREATE es FILE_READ_ATTRIBUTES. Este parámetro se establece en el miembro SecurityContext de la estructura FLT_PARAMETERS para la operación. Para obtener más información, consulte FLT_PARAMETERS para IRP_MJ_CREATE.
- El valor del parámetro ShareAccess para la operación de IRP_MJ_CREATE es FILE_SHARE_READ, FILE_SHARE_WRITE o FILE_SHARE_DELETE. Este parámetro se establece en el miembro shareAccess de la estructura de FLT_PARAMETERS para la operación. Para obtener más información, consulte FLT_PARAMETERS para IRP_MJ_CREATE.
Los filtros y los sistemas de archivos que llaman a esta función deben sincronizar las llamadas al paquete de oplock proporcionado por el sistema. Consulte Sincronización de oplock para obtener más información.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | fltkernel.h (incluya Fltkernel.h) |
Library | FltMgr.lib |
Archivo DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
Consulte también
FLT_PARAMETERS para IRP_MJ_CREATE
FLT_PARAMETERS para IRP_MJ_FILE_SYSTEM_CONTROL
FSCTL_OPBATCH_ACK_CLOSE_PENDING