Función FltSetInstanceContext (fltkernel.h)
FltSetInstanceContext establece un contexto para una instancia de controlador de minifiltro.
Sintaxis
NTSTATUS FLTAPI FltSetInstanceContext(
[in] PFLT_INSTANCE Instance,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out] PFLT_CONTEXT *OldContext
);
Parámetros
[in] Instance
Puntero de instancia opaco para la instancia.
[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:
Bandera | Significado |
---|---|
FLT_SET_CONTEXT_REPLACE_IF_EXISTS | Si ya se ha establecido un contexto para la instancia a la que apunta el parámetro Instance, fltSetInstanceContext reemplazará ese contexto por el contexto especificado en NewContext. De lo contrario, se establecerá newContext como contexto para instancia. |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | Si ya se ha establecido un contexto para esta instancia de , fltSetInstanceContext devuelve STATUS_FLT_CONTEXT_ALREADY_DEFINED y no reemplaza el contexto existente ni incrementa el recuento de referencias. Si aún no se ha establecido un contexto, la rutina establecerá NewContext como contexto para Instancia e incrementará el recuento de referencias. |
[in] NewContext
Puntero al nuevo contexto que se va a establecer para la instancia. Este parámetro es necesario y no se puede null.
[out] OldContext
Puntero a una variable asignada por el autor de la llamada que recibe la dirección del contexto de instancia existente, si ya se ha establecido una. Este parámetro es opcional y se puede NULL. Para obtener más información sobre este parámetro, vea la siguiente sección Comentarios.
Valor devuelto
fltSetInstanceContext devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado, como uno de los siguientes:
Código devuelto | Descripción |
---|---|
STATUS_FLT_CONTEXT_ALREADY_DEFINED | Si FLT_SET_CONTEXT_KEEP_IF_EXISTS se especificó para el parámetro operation de, este código de error indica que un contexto ya está asociado a la instancia. Solo se puede adjuntar un contexto a una instancia. |
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 de FltSetXxxContext. |
STATUS_FLT_DELETING_OBJECT | La instancia especificada en el parámetro instancia de se está descomponiéndose. 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 archivo válido o se especificó un valor no válido para el parámetro Operation de. Se trata de un código de error. |
Observaciones
Para obtener más información sobre los contextos, vea Acerca de los contextos de minifiltro.
Un controlador de minifiltro llama a fltSetInstanceContext para adjuntar un contexto de instancia a una instancia de controlador de minifiltro propiedad del autor de la llamada o para quitar o reemplazar un contexto de instancia existente. Un controlador de minifiltro solo puede adjuntar un contexto a una instancia.
Recuento de referencias
Si fltSetInstanceContext se realiza correctamente:
- Se incrementa el recuento de referencias de NewContext. Cuando el contexto al que apunta newContext ya no es necesario, el minifiltro debe llamar a FltReleaseContext para disminuir su recuento de referencias.
De lo contrario, si se produce un error en fltSetInstanceContext:
- 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 instancia. El filtro que llama a fltSetInstanceContext debe llamar finalmente a fltReleaseContext para OldContext, así como cuando el puntero de contexto ya no es necesario.
Independientemente del éxito:
- El filtro que llama a FltSetInstanceContext debe llamar a FltReleaseContext para reducir el recuento de referencias en el objeto NewContext que se incrementó FltAllocateContext.
Para obtener más información, vea Referencia a contextos.
Otras operaciones de contexto
Para obtener más información, vea Configuración de contextosy liberar contextos:
Para asignar un nuevo contexto, llame a FltAllocateContext.
Para obtener un contexto de instancia, llame a FltGetInstanceContext.
Para eliminar un contexto de instancia, llame a FltDeleteInstanceContext o FltDeleteContext.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible y compatible con el Paquete acumulativo de actualizaciones 1 de Microsoft Windows 2000 para SP4, Windows XP SP2, Windows Server 2003 SP1 y versiones posteriores del sistema operativo. |
de la plataforma de destino de | Universal |
encabezado de | fltkernel.h (incluya Fltkernel.h) |
biblioteca de | FltMgr.lib |
DLL de | Fltmgr.sys |
irQL | <= APC_LEVEL |