Поделиться через


Функция EngModifySurface (winddi.h)

Функция EngModifySurface уведомляет GDI об атрибутах поверхности, созданной драйвером.

Синтаксис

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

Параметры

hsurf

Дескриптор поверхности для изменения. Этот параметр представляет собой дескриптор поверхности, возвращаемый EngCreateDeviceBitmap или EngCreateDeviceSurface или из элемента hsurf структуры SURFOBJ .

hdev

Дескриптор устройства, с которым должна быть связана поверхность. Это дескриптор, который GDI передает в DrvCompletePDEV.

flHooks

Набор флагов, управляющих функциями, которые драйвер может зацепить при каждом рисовании GDI на указанной поверхности. Это может быть побитовое значение ИЛИ любого из значений HOOK_Xxx, перечисленных на справочной странице EngAssociateSurface .

flSurface

Набор флагов, описывающих атрибуты поверхности. В настоящее время драйвер должен задать для этого параметра значение MS_NOTSYSTEMMEMORY, если поверхность находится в видеопамяте.

dhsurf

Определяет поверхность для драйвера. Драйвер может задать для этого значение что угодно; GDI присваивает члену dhsurf структуры SURFOBJ результирующей поверхности это значение, если функция выполнена успешно.

pvScan0

Указатель на виртуальный адрес начала растрового изображения.

lDelta

Шаг виртуального адреса растрового изображения; т. е. количество байтов между началом одной строки растрового изображения и следующей.

pvReserved

Зарезервировано и всегда должно иметь значение NULL.

Возвращаемое значение

EngModifySurface возвращает значение TRUE при успешном выполнении; В противном случае возвращается значение FALSE.

Комментарии

EngModifySurface позволяет драйверу изменять поверхность, управляемую устройством , и информировать GDI об атрибутах этой поверхности. Это позволяет драйверам преобразовывать поверхность назначения из непрозрачной в непрозрачную, что позволяет GDI рисовать на поверхности.

Двигатель DIB использует pvScan0 и lDelta для рисования непосредственно к поверхности. Если эти параметры имеют значение NULL, поверхность непрозрачна для GDI, и GDI будет отменить изменения вызова DrvCopyBits для операций рисования, не вызванных драйвером.

После того как DrvEnableSurface вернет дескриптор в основную поверхность, не вызывайте EngModifySurface для этого дескриптора. Это может привести к ошибке проверка в определенных обстоятельствах. Дополнительные сведения см. в статье базы знаний Майкрософт 330248.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 2000 и более поздних версиях операционных систем Windows.
Целевая платформа Универсальное
Верхняя часть winddi.h (включая Winddi.h)
Библиотека Win32k.lib
DLL Win32k.sys

См. также раздел

DrvCopyBits

EngAssociateSurface