DrvEnablePDEV 함수(winddi.h)
DrvEnablePDEV 함수는 물리적 디바이스의 특성에 대한 설명을 GDI에 반환합니다.
구문
DHPDEV DrvEnablePDEV(
[in] DEVMODEW *pdm,
[in] LPWSTR pwszLogAddress,
ULONG cPat,
[in, optional] HSURF *phsurfPatterns,
ULONG cjCaps,
[out] ULONG *pdevcaps,
ULONG cjDevInfo,
[out] DEVINFO *pdi,
HDEV hdev,
[in] LPWSTR pwszDeviceName,
HANDLE hDriver
);
매개 변수
[in] pdm
드라이버 데이터를 포함하는 DEVMODEW 구조체에 대한 포인터입니다.
Windows NT 4.0을 지원하는 드라이버의 경우 GDI가 dmBitsPerPel, dmPelsWidth, dmPelsHeight 및 dmDisplayFrequency로 설정된 DEVMODEW 멤버를 사용하여 호출할 때 DrvEnablePDEV는 하드웨어의 기본 모드를 반환해야 합니다.
[in] pwszLogAddress
프린터 드라이버의 경우 는 드라이버가 작성 중인 위치에 대한 사용자의 이름인 논리 주소 문자열을 가리킵니다. 예를 들어 "LPT1" 또는 "내 프린터"가 있습니다.
표시 드라이버는 이 매개 변수를 무시해야 합니다.
cPat
프린터 드라이버의 경우 phsurfPatterns가 가리키는 버퍼의 표면 핸들 수를 지정합니다. 드라이버는 버퍼의 끝 이후 메모리에 액세스할 수 없습니다.
표시 드라이버는 이 매개 변수를 무시해야 합니다.
[in, optional] phsurfPatterns
표시 드라이버는 이 매개 변수를 무시해야 합니다.
프린터 드라이버의 경우 드라이버가 표준 채우기 패턴을 나타내는 표면 핸들로 채울 버퍼를 가리킵니다. 다음 패턴을 순서대로 정의해야 합니다.
패턴 | 설명 |
---|---|
HS_HORIZONTAL | 가로 해치. |
HS_VERTICAL | 수직 해치. |
HS_FDIAGONAL | 45도 위쪽 해치(왼쪽에서 오른쪽). |
HS_BDIAGONAL | 45도 아래쪽 해치(왼쪽에서 오른쪽). |
HS_CROSS | 가로 및 세로 교차 해치입니다. |
HS_DIAGCROSS | 45도 크로스해치. |
이러한 각 표면은 래스터 디바이스용 단색(픽셀당 1비트) GDI 비트맵이어야 합니다. 디바이스 드라이버는 디바이스 화면에 기록될 때 표준 패턴과 가장 유사한 패턴을 선택해야 합니다.
GDI는 벡터 디바이스에 대한 지원 루틴에서 이러한 브러시를 사용할 필요가 없습니다. 따라서 표면은 DrvRealizeBrush 가 표준 패턴으로 인식하는 디바이스 지원 표면일 수 있습니다.
cjCaps
pdevcaps가 가리키는 버퍼의 크기를 지정합니다. 드라이버는 버퍼의 끝 이후 메모리에 액세스해서는 안됩니다.
[out] pdevcaps
디바이스 기능을 설명하는 데 사용할 GDIINFO 구조체에 대한 포인터입니다. GDI는 DrvEnablePDEV를 호출하는 이 구조를 0으로 초기화합니다.
cjDevInfo
pdi가 가리키는 DEVINFO 구조체의 바이트 수를 지정합니다. 드라이버는 DEVINFO에서 이 바이트 수를 초과하지 않아야 합니다.
[out] pdi
드라이버 및 물리적 디바이스를 설명하는 DEVINFO 구조체에 대한 포인터입니다. 드라이버는 이해하는 멤버만 변경해야 합니다. GDI는 DrvEnablePDEV를 호출하기 전에 이 구조를 0으로 채웁니다.
hdev
디바이스에 GDI 제공 핸들입니다. 이 핸들은 EngGetDriverName과 같은 일부 GDI 콜백에 대한 입력으로 사용해야 합니다.
[in] pwszDeviceName
디바이스의 사용자가 읽을 수 있는 이름인 null로 끝나는 문자열에 대한 포인터입니다.
hDriver
출력 디바이스에 대한 핸들입니다. 디스플레이 드라이버의 경우 디스플레이 디바이스 핸들입니다. 프린터 드라이버의 경우 이 매개 변수를 스풀러 호출 시 프린터에 대한 핸들로 사용해야 합니다.
반환 값
반환 값은 함수가 성공한 경우 활성화된 디바이스를 식별하는 PDEV 에 대한 핸들입니다. 즉, DrvEnablePDEV는 성공 시 개인 드라이버 정의 디바이스 instance 정보에 대한 핸들을 반환합니다. 그렇지 않으면 NULL을 반환합니다.
설명
그래픽 디바이스 드라이버는 여러 논리 주소에 연결된 여러 물리적 디바이스를 지원할 수 있습니다. 또한 드라이버는 다른 그리기 표면의 동시 사용을 지원해야 합니다.
DrvEnablePDEV의 목적은 다음과 같습니다.
- GDI에 디바이스의 물리적 특성을 알릴 수 있습니다.
- 수신된 DEVMODE 구조체 및 디바이스 이름에 따라 현재 디바이스 instance 설명하는 프라이빗 PDEV 구조를 만듭니다.
단일 논리 디바이스는 다음으로 구분할 수 있는 여러 PDEV를 관리할 수 있습니다.
- 하드웨어 유형 - 단일 디바이스 드라이버가 "LaserWhiz", "LaserWhiz II" 및 "LaserWhiz Super"를 지원할 수 있습니다.
- 논리적 주소 -- 단일 디바이스 드라이버는 "LPT1", "COM2", "\SERVER1\PSLAZER" 등에 연결된 프린터를 지원할 수 있습니다. 둘 이상의 VGA 디스플레이를 동시에 지원할 수 있는 디스플레이 드라이버는 포트 번호에 따라 구분할 수 있습니다. 예를 들어 0x3CE 또는 0x2CE.
- Surface - 프린터 드라이버는 두 개의 인쇄 작업을 동시에 처리할 수 있습니다. 두 표면은 인쇄될 두 페이지를 나타냅니다. 마찬가지로 디스플레이 디바이스 드라이버는 동일한 디바이스에서 두 개의 데스크톱을 지원할 수 있습니다.
디바이스 화면에 비트맵을 할당해야 하는 경우 필요할 때까지 이러한 할당을 수행하지 않아도 됩니다. 애플리케이션은 실제로 디바이스에 쓰기 훨씬 전에 디바이스 정보를 요청하는 경우가 많지만 큰 비트맵과 같은 리소스를 할당하기 위해 대기하면 메모리가 절약됩니다.
GDI는 이 함수를 호출하기 전에 phsurfPatterns가 가리키는 버퍼를 0으로 초기화합니다.
DrvEnablePDEV 는 그래픽 드라이버에 필요합니다.
요구 사항
대상 플랫폼 | 데스크톱 |
머리글 | winddi.h(Winddi.h 포함) |