다음을 통해 공유


DrvEnableSurface 함수(winddi.h)

DrvEnableSurface 함수는 그릴 표면을 설정하고 지정된 물리적 디바이스와 연결합니다.

구문

HSURF DrvEnableSurface(
  DHPDEV dhpdev
);

매개 변수

dhpdev

물리적 디바이스의 PDEV에 대한 핸들입니다. DrvEnablePDEV의 반환 값입니다. PDEV는 표면을 만들 실제 디바이스에 대해 설명합니다.

반환 값

반환 값은 새로 만든 표면을 식별하는 핸들입니다. 그렇지 않으면 0이고 오류 코드가 기록됩니다.

설명

사용할 표면을 준비하는 방법에는 두 가지가 있습니다.

  1. 권장되는 이 메서드에서 드라이버는 EngCreateDeviceSurface를 호출하여 표면을 만듭니다. GDI가 표면을 만들고 드라이버에 핸들을 반환한 후 드라이버는 적절한 후크 플래그를 설정하는 EngModifySurface를 호출하고 필요에 따라 GDI에 표면의 위치를 알립니다.
  2. 두 번째 방법은 Windows NT 4.0 드라이버에서 사용하는 메서드입니다. 이 메서드에서 드라이버는 EngCreateBitmap을 호출합니다. 이 호출 후 드라이버는 EngAssociateSurface 를 호출하여 표면을 물리적 디스플레이 디바이스와 연결합니다. 이 GDI 함수를 사용하면 드라이버가 표준 형식 비트맵에 지원되는 그래픽 출력 루틴을 지정할 수 있습니다. 이 함수에 대한 호출은 지정된 물리적 디바이스에 대한 표면이 없는 경우에만 수행할 수 있습니다. Windows 2000 이상 드라이버가 Windows NT 4.0에서 실행되도록 백포트된 경우 이 메서드를 사용해야 합니다. 이러한 드라이버가 Windows 2000 이상에서도 실행되는 경우 드라이버의 별도의 코드 경로에서 첫 번째 메서드를 사용해야 합니다.

    프린터 디바이스의 경우 GDI가 GDI 비트맵에 직접 그래픽을 수집하는 것이 일반적인 상황입니다. 드라이버는 GDI가 비트맵에 대한 메모리를 할당할 수 있도록 하는 EngCreateBitmap을 호출해야 합니다.

모든 기존 GDI 비트맵 핸들은 유효한 표면 핸들입니다.

GDI 관리형 표면 을 사용하는 프린터 그래픽 DLL 의 경우 DrvEnableSurface 함수는 EngCreateBitmap을 호출하여 전체 실제 페이지를 포함할 수 있을 만큼 큰 표면 크기를 지정해야 합니다. 실패하면 호출이 성공할 때까지 표면 크기가 감소하여 EngCreateBitmap 에 대한 반복 호출을 시도해야 합니다. 유효한 크기는 EngMarkBandingSurface에 대한 입력으로 지정되어야 하며, 이는 표면 밴딩이 필요하다는 것을 GDI에 알립니다.

DrvEnableSurface가 핸들을 기본 표면으로 반환한 후에는 해당 핸들에서 EngModifySurface 또는 EngAssociateSurface를 호출하지 마세요. 이렇게 하면 특정 상황에서 버그 검사 발생할 수 있습니다. 자세한 내용은 Microsoft 기술 자료 문서 330248 참조하세요.

DrvEnableSurface 는 그래픽 드라이버에 필요합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 winddi.h(Winddi.h 포함)

추가 정보

DrvDisableSurface

DrvEnablePDEV

EngCreateBitmap

EngCreateDeviceSurface