Surface Negotiation

Drawing and text output require a surface on which to draw. This surface is enabled through DrvEnableSurface and is referred to as the primary surface. There is only one primary surface enabled per PDEV although a driver can support several PDEVs. Drivers that support DrvCreateDeviceBitmap can create and use many bitmap surfaces. These bitmap surfaces are referred to as secondary surfaces because they must be drawn on the surface created by DrvEnableSurface. The driver is responsible for determining the type of drawing surface it supports. It does this by calling back to GDI with one of the surface-creation GDI service functions.