Uso de objetos de Marco de trabajo general

El objeto de marco general es el objeto de marco del que se derivan todos los demás tipos de objetos de marco.

Al igual que otros objetos de marco, los objetos generales admiten un recuento de referencias, un espacio de contexto, funciones de devolución de llamada de eliminación y un objeto primario, como se describe en Introducción a los objetos framework.

Los controladores pueden crear y usar objetos de marco generales. Si el controlador llama a WdfObjectCreate para crear objetos generales, el controlador puede hacer lo siguiente:

  • Cree uno o varios espacios de contexto para cada objeto general.

    Puede usar el espacio de contexto del objeto para almacenar información sobre los recursos del sistema que desea asociar con el objeto general.

    Para obtener más información sobre el espacio de contexto, vea Espacio de contexto de objetos de marco.

  • Asigne un elemento primario al objeto general.

    El objeto general se eliminará cuando se elimine el objeto primario. Por ejemplo, si el controlador especifica un objeto de dispositivo de marco como el objeto primario de uno de sus objetos generales, el marco eliminará el objeto general cuando elimine el objeto de dispositivo.

    Los controladores especifican el objeto primario de un objeto estableciendo el miembro ParentObject de la estructura WDF_OBJECT_ATTRIBUTES del objeto.

  • Proporcione funciones de devolución de llamada de eliminación.

    El controlador puede proporcionar funciones EvtCleanupCallback y EvtDestroyCallback , que pueden desasignar los recursos del sistema asignados al crear el objeto general. Por ejemplo, si el controlador llamó a ExAllocatePool cuando creó un objeto general, la función de limpieza o destrucción de devolución de llamada puede llamar a ExFreePool.

El uso de objetos generales puede ser una manera cómoda de administrar los recursos asignados por controladores. Por ejemplo, un controlador de nivel superior podría requerir varias asignaciones de memoria para procesar una solicitud de E/S recibida, si el controlador envía la solicitud a varios dispositivos o interrumpe la solicitud en varias más pequeñas. El controlador puede crear uno o varios objetos generales que son elementos secundarios de la solicitud de E/S recibida y puede almacenar información sobre las asignaciones de memoria en el espacio de contexto de los objetos generales.