Previous Next

EngModifySurface

The EngModifySurface function notifies GDI about the attributes of a surface that was created by the driver.

BOOL
  EngModifySurface(
    IN HSURF  hsurf,
    IN HDEV  hdev,
    IN FLONG  flHooks,
    IN FLONG  flSurface,
    IN DHSURF  dhsurf,
    IN VOID*  pvScan0,
    IN LONG  lDelta,
    IN VOID*  pvReserved
    );

Parameters

hsurf
Handle to the surface to be modified. This parameter is the surface handle returned by EngCreateDeviceBitmap or EngCreateDeviceSurface, or from the hsurf member of the SURFOBJ structure.
hdev
Handle to the device with which the surface is to be associated. This is the handle that GDI passed to DrvCompletePDEV.
flHooks
Is a set of flags that control the functions the driver can hook whenever GDI drawing occurs on the specified surface. This can be a bitwise OR of any of the HOOK_Xxx values listed on the EngAssociateSurface reference page.
flSurface
Is a set of flags that describe the surface's attributes. Currently, the driver should set this to MS_NOTSYSTEMMEMORY when the surface is located in video memory.
dhsurf
Identifies the surface to the driver. The driver can set this to anything; GDI sets the dhsurf member of the resulting surface's SURFOBJ structure to this value if the function is successful.
pvScan0
Pointer to the virtual address of the start of the bitmap.
lDelta
Is the virtual address stride of the bitmap; that is, the number of bytes between the beginning of one bitmap row and the next.
pvReserved
Is reserved and must always be set to NULL.

Return Value

EngModifySurface returns TRUE upon success; otherwise it returns FALSE.

Headers

Declared in winddi.h. Include winddi.h.

Comments

EngModifySurface allows the driver to modify a device-managed surface and inform GDI of this surface's attributes. This allows drivers to convert the destination surface from being opaque to nonopaque, thus allowing GDI to draw on the surface.

The DIB engine uses pvScan0 and lDelta to draw directly to the surface. When these parameters are NULL, the surface is opaque to GDI, and GDI will revert to calling DrvCopyBits for drawing operations not hooked by the driver.

After DrvEnableSurface returns a handle to a primary surface, do not call EngModifySurface on that handle. Doing so can cause a bug check in certain circumstances. For more information, see Microsoft Knowledge Base article 330248.

See Also

EngAssociateSurface, DrvCopyBits