Функция DrvEnableSurface (winddi.h)
Функция DrvEnableSurface настраивает поверхность для рисования и связывает ее с заданным физическим устройством.
Синтаксис
HSURF DrvEnableSurface(
DHPDEV dhpdev
);
Параметры
dhpdev
Дескриптор PDEV физического устройства. Это возвращаемое значение DrvEnablePDEV. PDEV описывает физическое устройство, для которого создается поверхность.
Возвращаемое значение
Возвращаемое значение — это дескриптор, идентифицирующий только что созданную поверхность. В противном случае значение равно нулю и регистрируется код ошибки.
Комментарии
Существует два метода подготовки поверхности к использованию.
- В этом методе, который рекомендуется использовать, драйвер создает поверхность путем вызова EngCreateDeviceSurface. После того как GDI создаст поверхность и вернет дескриптор драйверу, драйвер вызывает EngModifySurface, который устанавливает соответствующие флаги перехватчика и, при необходимости, сообщает GDI о расположении поверхности.
-
Второй метод используется драйверами Windows NT 4.0. В этом методе драйвер вызывает EngCreateBitmap. После этого вызова драйвер вызывает EngAssociateSurface , чтобы связать поверхность с физическим устройством отображения. Эта функция GDI позволяет драйверу указать, какие подпрограммы вывода графики поддерживаются для растровых изображений стандартного формата. Вызов этой функции можно выполнить только в том случае, если для данного физического устройства не существует поверхности. Если драйвер Windows 2000 или более поздней версии обратно перенесен для работы в Windows NT 4.0, необходимо использовать этот метод. Если такой драйвер также будет работать в Windows 2000 или более поздней версии, в отдельном пути к коду в драйвере следует использовать первый метод.
Для принтеров обычно GDI собирает графику непосредственно на растровое изображение GDI. Драйвер должен вызвать EngCreateBitmap, что позволяет GDI выделять память для растрового изображения.
Для библиотек DLL графики принтера , использующих управляемые GDI поверхности, функция DrvEnableSurface должна вызывать EngCreateBitmap, указывая размер поверхности, достаточно большой, чтобы содержать всю физическую страницу. Если это не удается, следует предпринимать повторные вызовы к EngCreateBitmap с уменьшением размера поверхности до тех пор, пока вызов не завершится успешно. Допустимый размер следует указать в качестве входных данных для EngMarkBandingSurface, что сообщает GDI о необходимости чередования поверхностей.
После того как DrvEnableSurface вернет дескриптор первичной поверхности, не вызывайте EngModifySurface или EngAssociateSurface для этого дескриптора. Это может привести к ошибке проверка в определенных обстоятельствах. Дополнительные сведения см. в статье базы знаний Майкрософт 330248.
DrvEnableSurface требуется для графических драйверов.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | winddi.h (включая Winddi.h) |