Función FltSetTransactionContext (fltkernel.h)
La rutina FltSetTransactionContext establece un contexto en una transacción.
Sintaxis
NTSTATUS FLTAPI FltSetTransactionContext(
[in] PFLT_INSTANCE Instance,
[in] PKTRANSACTION Transaction,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out, optional] PFLT_CONTEXT *OldContext
);
Parámetros
[in] Instance
Puntero de instancia opaco para el autor de la llamada.
[in] Transaction
Puntero de transacción opaco para la transacción en la que se establece el contexto.
[in] Operation
Marca que especifica los detalles de la operación que se va a realizar. Este parámetro debe ser uno de los siguientes:
Marca | Significado |
---|---|
FLT_SET_CONTEXT_REPLACE_IF_EXISTS | Si ya se ha establecido un contexto para la transacción a la que apunta el parámetro Transaction , FltSetTransactionContext lo reemplazará por el contexto al que apunta el parámetro NewContext . De lo contrario, establecerá el contexto al que apunta el parámetro NewContext como contexto de la transacción a la que apunta el parámetro Transaction . |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | Si ya se ha establecido un contexto para la transacción a la que apunta el parámetro Transaction , FltSetTransactionContext devolverá STATUS_FLT_CONTEXT_ALREADY_DEFINED y no reemplazará el contexto existente ni incrementará el recuento de referencias. Si aún no se ha establecido un contexto, esta rutina establecerá el contexto al que apunta el parámetro NewContext como contexto para la transacción a la que apunta el parámetro Transaction y aumentará el recuento de referencias. |
[in] NewContext
Puntero al nuevo contexto que se va a establecer para la transacción. Este parámetro es obligatorio y no puede ser NULL.
[out, optional] OldContext
Puntero a una variable asignada por el autor de la llamada que recibe la dirección del contexto de transacción existente, si ya se ha establecido uno. Este parámetro es opcional y puede ser NULL. Para obtener más información sobre este parámetro, vea la siguiente sección Comentarios.
Valor devuelto
FltSetTransactionContext devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado, como uno de los siguientes:
Código devuelto | Descripción |
---|---|
STATUS_FLT_CONTEXT_ALREADY_DEFINED | Si se especificó FLT_SET_CONTEXT_KEEP_IF_EXISTS para el parámetro Operation , este código de error indica que un contexto ya está asociado a la transacción. Solo se puede adjuntar un contexto a una transacción para un controlador de minifiltro determinado. |
STATUS_FLT_CONTEXT_ALREADY_LINKED | El contexto al que apunta el parámetro NewContext ya está vinculado a un objeto . En otras palabras, este código de error indica que NewContext ya está en uso debido a una llamada previa correcta de una rutina FltSetXxxContext . |
STATUS_FLT_DELETING_OBJECT | |
La instancia especificada en el parámetro Instance se está eliminando. Se trata de un código de error. | |
STATUS_INVALID_PARAMETER | Se pasó un parámetro no válido. Por ejemplo, el parámetro NewContext no apunta a un contexto de transacción válido o se especificó un valor no válido para el parámetro Operation . Se trata de un código de error. |
Comentarios
Para obtener más información sobre los contextos, vea Acerca de los contextos de minifiltro.
Un controlador de minifiltro llama a FltSetTransactionContext para adjuntar un contexto a una transacción o para quitar o reemplazar un contexto de transacción existente. Un controlador de minifiltro solo puede adjuntar un contexto a una transacción determinada.
Recuento de referencias
Si FltSetTransactionContext se realiza correctamente:
- El recuento de referencias de NewContext se incrementa. Cuando NewContext ya no es necesario, el minifiltro debe llamar a FltReleaseContext para disminuir su recuento de referencias.
Si se produce un error en FltSetTransactionContext :
- El recuento de referencias de NewContext permanece sin cambios.
- Si OldContext no es NULL y no apunta a NULL_CONTEXT, OldContext es un puntero al contexto asociado actualmente a la transacción. El filtro que llama a FltSetTransactionContext debe llamar a FltReleaseContext para OldContext , así como cuando el puntero de contexto ya no es necesario.
Independientemente del éxito:
- El filtro que llama a FltSetTransactionContext debe llamar a FltReleaseContext para disminuir el recuento de referencias en el objeto NewContext incrementado por FltAllocateContext.
Para obtener más información, vea Referencia a contextos.
Otras operaciones de contexto
Para obtener más información, vea Establecer contextos y liberar contextos:
- Para asignar un nuevo contexto, llame a FltAllocateContext.
Para obtener un contexto de transacción, llame a FltGetTransactionContext.
- Para eliminar un contexto de transacción, llame a FltDeleteTransactionContext o FltDeleteContext.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible y compatible con Windows Vista y sistemas operativos posteriores. |
Plataforma de destino | Universal |
Encabezado | fltkernel.h (incluya Fltkernel.h) |
Library | FltMgr.lib |
Archivo DLL | FltMgr.sys |
IRQL | <= APC_LEVEL. |