DrvConvertDevMode 함수(winddiui.h)
프린터 인터페이스 DLL의 DrvConvertDevMode 함수는 프린터의 DEVMODEW 구조를 한 버전에서 다른 버전으로 변환합니다.
통사론
BOOL DrvConvertDevMode(
[in] LPTSTR pPrinterName,
[in] PDEVMODE pdmIn,
[out] PDEVMODE pdmOut,
[in, out] PLONG pcbNeeded,
[in] DWORD fMode
);
매개 변수
[in] pPrinterName
프린터 이름 문자열에 대한 호출자 제공 포인터입니다. 이 매개 변수에 대한 자세한 내용은 다음 주의 섹션을 참조하세요.
[in] pdmIn
입력 DEVMODEW 구조체에 대한 호출자 제공 포인터입니다. fMode CDM_DRIVER_DEFAULT 경우 이 포인터는 NULL .
[out] pdmOut
출력 DEVMODEW 구조를 수신하는 버퍼에 대한 호출자 제공 포인터입니다. fMode CDM_CONVERT 버퍼에 입력 시 대상 드라이버 버전을 나타내는 유효한 DEVMODEW 구조체가 포함됩니다.
[in, out] pcbNeeded
pdmOut 가리키는 버퍼의 크기에 대한 호출자 제공 포인터(바이트)입니다. 출력에서 프린터 인터페이스 DLL은 수신된 크기 값을 변환된 DEVMODEW 구조의 실제 크기로 덮어써야 합니다. 받은 버퍼가 너무 작은 경우 프린터 인터페이스 DLL은 수신된 크기 값을 필요한 버퍼 크기로 덮어써야 합니다.
[in] fMode
수행할 작업의 유형을 나타내는 호출자 제공 비트 플래그입니다. 다음 플래그 중 하나일 수 있습니다.
CDM_CONVERT
이 함수는 입력 DEVMODEW 구조체(pdmIn가리키는)의 내용을 새 DEVMODEW 구조체로 변환하고 결과를 pdmOut가리키는 DEVMODEW 구조체에 배치해야 합니다. 수신된 출력 DEVMODEW 구조의 초기 내용(pdmOut가리키는)을 사용하여 출력 버전을 확인해야 합니다.
CDM_CONVERT351
함수는 입력 DEVMODEW 구조체의 내용(pdmIn가리키는)을 변환하고 Windows NT 3.51과 호환되는 출력 DEVMODEW 구조체를 만들고 pdmOut가리키는 DEVMODEW 구조체에 결과를 배치해야 합니다.
드라이버가 Windows NT 3.51에 대한 DEVMODEW 구조를 지원하지 않는 경우 함수는 입력 DEVMODEW를 현재 버전으로 변환해야 합니다.
CDM_DRIVER_DEFAULT
함수는 기본 DEVMODEW 구조체의 현재 버전을 pdmOut 가리키는 버퍼에 복사해야.
반환 값
작업이 성공하면 함수는 true 반환해야 합니다. 그렇지 않으면 SetLastError를 호출하여 오류 코드를 설정하고 false 반환해야 합니다.
발언
클라이언트/서버 환경에서는 서버(스풀러)가 다른 버전을 실행하는 동안 클라이언트가 운영 체제 또는 프린터 드라이버의 한 버전을 실행 중일 수 있습니다. 즉, 프린터의 DEVMODEW 구조 정의가 클라이언트와 서버 간에 일치하지 않을 수 있습니다. DrvConvertDevMode 함수는 프린터 DEVMODEW 구조의 한 버전에서 다른 버전으로 변환을 수행할 수 있어야 합니다.
한 DEVMODEW 버전에서 다른 버전으로 변환하는 경우 공용 및 프라이빗 DEVMODEW 멤버를 모두 포함해야 합니다.
pPrinterName 가리키는 프린터 이름은 CDM_DRIVER_DEFAULT 플래그를 받을 때 저장된 기본값을 얻기 위해 호출할 수 있는 OpenPrinter 함수(Microsoft Windows SDK 설명서에 설명되어 있음)에 대한 입력 인수로 사용할 수 있습니다. OpenPrinter호출하기 전에 프린터 이름 문자열을 수정해서는 안 됩니다. 또한 OpenPrinter 호출은 DrvConvertDevMode호출하는 데 사용된 것과 동일한 스레드에 있어야 합니다.
함수는 pdmIn 및 pdmOut(해당하는 경우) 모두 유효한 DEVMODEW 구조를 가리키는지 확인해야 합니다. 그렇지 않은 경우 함수는 SetLastError(ERROR_INVALID_PARAMETER)를 호출하고 false 반환해야 합니다. pcbNeeded 지정한 출력 DEVMODEW 크기가 너무 작으면 드라이버는 필요한 버퍼 크기로 pcbNeeded 제공된 크기 값을 덮어쓰고 SetLastError(ERROR_INSUFFICIENT_BUFFER)를 호출하고 FALSE반환해야 합니다.
DrvConvertDevMode 함수는 스풀러의 컨텍스트에서 실행되므로 사용자 인터페이스를 표시해서는 안 됩니다.
DrvConvertDevModepdmOut 매개 변수에 NULL DEVMODEW 구조 포인터를 사용하여 호출되면 드라이버는 마지막 오류를 ERROR_INSUFFICIENT_BUFFER 설정해야 합니다. 마지막 오류가 이 값으로 설정되지 않은 경우 스풀러는 일반적인 오류를 가정합니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 바탕 화면 |
헤더 | winddiui.h(Winddiui.h 포함) |