Compartir a través de


Gancho frente a punteo

Los términos de enlace y puntuación hacen referencia a decisiones de controlador sobre si proporciona operaciones de dibujo de mapa de bits estándar o se basa en GDI para proporcionarlas. Si el controlador implementa superficies administradas por el motor, GDI puede controlar todas las operaciones de dibujo. Sin embargo, un controlador puede proporcionar una o varias de las funciones de dibujo si su hardware puede acelerar esas operaciones. Para ello, implementa o enlaza una función DrvXxx .

Un escritor de controladores puede querer implementar solo un subconjunto de las operaciones de dibujo que implementa un punto de entrada DDI de gráficos determinado. Para cualquier operación que el controlador no admita, puede llamar a las funciones GDI adecuadas para llevar a cabolas. Esto se conoce como puntuación a GDI. Hay algunas situaciones en las que se debe implementar la operación en el controlador. Por ejemplo, si el controlador implementa una superficie administrada por el dispositivo, ciertas funciones de dibujo deben implementarse en el controlador de pantalla.

Enganchar

De forma predeterminada, cuando una superficie de dibujo es una superficie administrada por el motor, GDI controla la operación de dibujo (representación). Para que un controlador aproveche el hardware que ofrece aceleración para algunas o todas estas funciones de dibujo para una superficie determinada, o para usar hardware especial de transferencia de bloques, puede enlazar estas funciones. Para enlazar llamadas, el controlador especifica los enlaces como marcas del parámetro flHook de las funciones EngAssociateSurface y EngModifySurface .

Si el controlador especifica la marca de enlace de una función, debe proporcionar esa función en su lista de puntos de entrada DDI de gráficos admitidos. El controlador puede optimizar la operación en la que hay compatibilidad con hardware. Este controlador puede controlar solo determinados casos en una llamada enlazada. Por ejemplo, si se solicitan gráficos complicados en una llamada que está enlazada, puede ser más eficaz punttar la devolución de llamada a GDI, lo que permite que GDI controle la operación.

Este es otro ejemplo de un controlador que elige si se va a controlar una llamada enlazada. Considere un controlador que admita hardware capaz de controlar llamadas de transferencia de bloques de bits con determinadas ROP. Aunque este controlador puede llevar a cabo muchas operaciones por sí solas, de lo contrario es simplemente un búfer de fotogramas. Este controlador devolverá un identificador a la superficie de mapa de bits para el búfer de fotogramas como la superficie de su PDEV, pero enlazará la llamada DrvBitBlt para sí misma. Cuando GDI llama a DrvBitBlt, el controlador puede comprobar el ROP para ver si es uno de los admitidos por el hardware. Si no es así, el controlador puede volver a pasar la operación a GDI con una llamada a la función EngBitBlt .

Los controladores que admiten superficies administradas por dispositivos deben enlazar algunas de las funciones de dibujo; es decir , DrvCopyBits, DrvTextOut y DrvStrokePath. Aunque las simulaciones de GDI pueden controlar otras funciones de dibujo, se recomienda por motivos de rendimiento que los controladores de este tipo enlacen otras funciones, como las funciones DrvBitBlt y DrvRealizeBrush , porque la simulación requiere dibujar desde y hacia la superficie.

Punting

Punting the callback to GDI means to put in a call to the correspondiente GDI simulation. En general, para cada llamada de gráficos DrvXxx , hay una llamada de simulación GDI EngXxx correspondiente que toma los mismos argumentos. Siempre que el controlador haya hecho que el mapa de bits no seaopaque, todos los parámetros se pueden pasar sin cambiar a una simulación GDI. Para cada llamada al controlador punts de vuelta a GDI, se reduce el tamaño del controlador (ya que se puede omitir el código de esa funcionalidad). Sin embargo, dado que el motor posee la llamada, el controlador no tiene control sobre la velocidad de ejecución. En algunos casos complicados, puede que no haya ninguna ventaja real para proporcionar soporte técnico en el controlador.

Funciones de salida de gráficos GDI enlazables

Las funciones de salida de gráficos que el controlador puede enlazar y las simulaciones GDI correspondientes se muestran en la tabla siguiente.

Función de salida de gráficos del controlador Simulación GDI correspondiente

DrvBitBlt

EngBitBlt

DrvPlgBlt

EngPlgBlt

DrvStretchBlt

EngStretchBlt

DrvStretchBltROP

EngStretchBltROP

DrvTextOut

EngTextOut

DrvStrokePath

EngStrokePath

DrvFillPath

EngFillPath

DrvStrokeAndFillPath

EngStrokeAndFillPath

DrvLineTo

EngLineTo

DrvCopyBits

EngCopyBits

DrvAlphaBlend

EngAlphaBlend

DrvGradientFill

EngGradientFill

DrvTransparentBlt

EngTransparentBlt