V4 드라이버 설정 개념
Important
최신 인쇄 플랫폼은 Windows에서 프린터와 통신하는 데 선호되는 수단입니다. 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하려면 MICROSOFT의 IPP 받은 편지함 클래스 드라이버와 PSA(인쇄 지원 앱)를 사용하는 것이 좋습니다.
자세한 내용은 인쇄 지원 앱 디자인 가이드참조하세요.
v4 인쇄 드라이버 모델은 새 설치 모델을 사용하여 사용자 환경을 개선하고 지원 비용을 절감합니다.
v4 인쇄 드라이버는 드라이버 저장소에서 직접 실행되므로 파일 충돌 가능성이 없어지고 설치 성능이 향상됩니다. v4 설치 모델은 INF 파일을 계속 사용하지만 새 매니페스트 파일을 사용하여 프린터별 설정 지시문을 캡처합니다.
디바이스 식별자
CompatibleIDS
CompatibleID는 드라이버를 업데이트할 필요 없이 새 버전의 Windows가 릴리스된 후 출시된 디바이스를 드라이버에서 지원할 수 있도록 하기 때문에 인쇄 클래스 드라이버의 주요 개념입니다. 호환 ID를 사용하면 디바이스가 하드웨어ID보다 덜 구체적인 인쇄 드라이버에 대한 지원을 보급할 수 있기 때문입니다.
인쇄 클래스 드라이버에서 특정 CompatibleID를 이미 지원하는 경우 v4 인쇄 드라이버에서 다시 지정해서는 안 됩니다. 인쇄 드라이버의 날짜가 인쇄 클래스 드라이버의 날짜보다 최신이면 인쇄 드라이버가 Windows 업데이트 사이트에서 자동으로 다운로드됩니다.
디바이스는 1284ID 문자열에 CompatibleID를 포함해야 합니다. 기존 인쇄 클래스 드라이버가 디바이스를 지원하는 경우 인쇄 드라이버에서 해당 CompatibleID를 사용해야 합니다. 그렇지 않으면 다음 형식을 사용하는 것이 좋습니다.
1284_CID_<manufacturer identifier>_<PDL identifier>_device family identifier
예시:
1284_CID_FA_PCL5e_Laser
CompatibleID가 기존 디바이스에서 이미 구현된 경우 인쇄 드라이버는 해당 CompatibleID를 계속 사용해야 합니다.
호환 ID는 TCP/IP 기반 인쇄 디바이스 설치에 사용되지 않습니다. 따라서 사용자는 드라이버 이름만 사용하여 적절한 드라이버를 식별해야 합니다. 인쇄 클래스 드라이버와 관련된 경우 제조업체는 인쇄 클래스 드라이버에서 지원하는 모든 디바이스에 대한 호환성 목록을 웹 사이트에 제공하는 것이 좋습니다. 규칙 및 제한 사항의 전체 목록을 포함하여 하드웨어에서 CompatibleID를 구현하는 방법에 대한 자세한 내용은 인쇄 디바이스에서 호환 ID를 구현하는 방법을 참조 하세요.
Microsoft는 여러 제조업체 중립(표준) 인쇄 클래스 드라이버를 지원하기 위해 몇 가지 표준 CompatibleID를 지원합니다. 다음 표에서는 이러한 표준 CompatibleID 및 관련 PDL 파일 형식을 보여 줍니다.
PDL 파일 형식 | Standard CompatibleID |
---|---|
XPS | 1284_CID_MS_XPS |
OpenXPS(ECMA-388) | 1284_CID_MS_OXPS |
PCL6 | 1284_CID_MS_PCL6 |
PS | 1284_CID_MS_PS |
이러한 표준 인쇄 클래스 드라이버는 작은 기능 집합만 지원하므로 이러한 클래스 드라이버를 활용하도록 선택한 제조업체는 Bidi를 사용하여 보다 구체적인 용지 크기와 구성을 추가하여 향상된 드라이버 구성을 구현해야 합니다. 다음 표에서는 표준 인쇄 클래스 드라이버에서 지원하는 기능 및 관련 옵션을 보여 줍니다.
기능 | 옵션 |
---|---|
용지 크기 | Letter, A4 |
해결 | 300dpi, 600dpi |
미디어 형식 | 일반 용지 |
N-Up | 1, 2, 4, 6, 9, 16 |
PrinterDriverID
PrinterDriverID는 프린터 공유에 대 한 드라이버 간의 호환성 뿐만 아니라 드라이버와 프린터 확장 간의 호환성을 확인 하는 데 사용 되는 새로운 식별자입니다. 예를 들어 서버의 드라이버가 매니페스트 파일에서 PrinterDriverID를 지정하고 드라이버가 공유되는 경우 이 프린터에 연결하는 클라이언트는 로컬 드라이버 저장소를 검색하고 드라이버 INF에서 동일한 PrinterDriverID를 지정하는 드라이버를 Windows 업데이트. 일치하는 항목이 발견되면 해당 드라이버를 사용하여 연결됩니다. 클라이언트 컴퓨터는 드라이버 이름을 사용하여 일치하는 결과를 필터링하지 않습니다.
다음과 같은 방법으로 호환되는 모든 드라이버에 대해 PrinterDriverID를 지정해야 합니다.
v4 매니페스트에서 PrinterDriverID 지시문을 사용합니다.
v4 드라이버 INF의 하드웨어 ID입니다.
서로 다른 두 드라이버가 동일한 PrinterDriverID를 공유하려면 공유와 호환되어야 합니다. 연결이 항상 성공하려면 두 드라이버가 다음을 수행할 수 있어야 합니다.
동일한 PDL 지원
동일한 종류의 구성 파일 사용(GPD 또는 PPD)
서버 드라이버의 GPD, PPD 및/또는 제약 조건 JS 파일에 지정된 모든 기능 또는 옵션을 렌더링할 수 있어야 합니다.
동일한 프린터 확장 지원
스풀러는 이러한 제한 사항의 유효성을 검사하지 않으며 PrinterDriverID에만 의존하여 두 드라이버가 공유와 호환되는지 여부를 나타냅니다. 제조업체는 위의 항목을 변경한 경우 드라이버의 PrinterDriverID를 변경해야 합니다.
프린터 확장은 PrinterDriverID를 통해 드라이버와 연결할 수도 있습니다. 따라서 PrinterDriverID를 공유하는 두 드라이버가 모두 동일한 프린터 확장에서 작동해야 합니다. 설치된 마지막 프린터 확장은 대상 PrinterDriverID를 사용하는 모든 장치에 대해 이전 프린터 확장을 덮어쓰므로 동일한 앱을 사용하여 제대로 작동해야 합니다.
GUID 사용에 대한 모범 사례
GUID는 특히 PrinterDriverID 및 PrinterExtensionID, EventID 및 ModelID에서 v4 인쇄 드라이버 모델을 통해 광범위하게 사용됩니다. 이러한 항목은 시스템에서 다른 항목을 고유하게 식별하거나 서비스, 공유 등을 위해 동일하게 식별하는 데 사용됩니다.
새 GUID를 만들 때는 Microsoft Visual Studio에 포함된 GUID 생성기 또는 SDK에 포함된 GUID 생성기와 같은 GUID 생성기를 항상 사용합니다. 잘못 복사하여 붙여넣은 수동으로 만든 GUID와 GUID는 충돌하기 쉽습니다.
설정 동작
인쇄 큐 이름
v3 드라이버의 경우 인쇄 큐 이름이 먼저 드라이버 이름에 따라 지정된 다음 사용자가 지정합니다. 인쇄 클래스 드라이버의 도입으로 드라이버 이름은 디바이스의 사용자 인식에 훨씬 덜 유용합니다. Windows는 다음과 같이 v4 인쇄 드라이버를 실행하기 위해 설치된 모든 플러그 앤 플레이 디바이스에 대해 큐의 이름을 자동으로 바꿉니다.
처음에는 인쇄 큐 이름이 드라이버 이름으로 설정됩니다.
드라이버가 v4 인쇄 드라이버인 경우 Windows는 Bidi를 사용하여 디바이스를 쿼리합니다.
\Printer.DeviceInfo:FriendlyName을 지정하면 새 큐 이름으로 사용됩니다.
그렇지 않으면 Windows에서 \Printer.DeviceInfo:Manufacturer, \Printer.DeviceInfo:ModelName을 쿼리합니다.
둘 다 지정된 경우 Windows는 이를 "Manufacturer ModelName"에 연결합니다.
이러한 Bidi 쿼리 중 하나만 실패하면 Windows는 다른 쿼리의 성공적인 반환을 큐 이름으로 사용합니다.
모든 Bidi 쿼리가 실패하면 Windows는 IEEE 1284ID를 사용하여 제조업체 및 모델 이름을 확인합니다.
DESCRIPTION 또는 DES를 지정하면 새 큐 이름으로 사용됩니다.
그렇지 않으면 Windows에서 MANUFACTURER 또는 MFG 및 MODEL 또는 MDL을 검색합니다.
둘 다 지정된 경우 Windows는 이를 "MANUFACTURER MODEL"에 연결합니다.
이 중 하나만 실패하면 Windows는 다른 키의 값을 큐 이름으로 사용합니다.
프린터 추가 마법사
드라이버 이름은 프린터 추가 마법사에서 드라이버를 선택하는 사용자가 사용할 수 있는 유일한 식별자입니다. TCP/IP 기반 디바이스는 TCP/IP 자동 검색을 지원하기 위해 포트 모니터 MIB(PWG 5107.1-2005)를 구현해야 합니다. HWID(하드웨어 ID) 매핑을 사용하여 인쇄 클래스 드라이버에 추가된 기존 디바이스는 디바이스별 모델 이름을 추가로 사용할 수 있습니다.
포트 변경 및 프린터 개발 노드 처리
일관된 UI 환경을 제공하기 위해 모든 인쇄 큐에 소프트웨어 디바이스 노드(devnode)가 제공됩니다. UI에서 프린터를 검색하는 방법이며 가상 프린터, 공유 프린터에 대한 연결 및 네트워크 프린터를 플러그 앤 플레이(PnP) 프린터와 동일한 방식으로 열거하고 액세스할 수 있습니다. 물리적 PnP 프린터에 대한 소프트웨어 devnodes는 큐 생성을 트리거한 PnP devnode에서 속성을 상속합니다.
서로 다른 두 개체가 관련된 경우 UI는 devnodes를 디바이스 컨테이너로 그룹화합니다. 이 그룹화는 MFP(다기능 프린터)가 디바이스 및 프린터 폴더에 하나의 아이콘으로 표시되도록 하는 것입니다. 함수가 모두 동일한 아이콘 아래에 표시되려면 MFP의 모든 함수에 대한 컨테이너 ID가 동일해야 합니다. 이 작업은 PnP 디바이스에 대해 자동으로 수행됩니다.
큐와 연결된 포트를 변경하면 큐의 devnode와 연결된 컨테이너 ID가 변경됩니다. 이렇게 하면 큐가 더 이상 실제 디바이스에 대한 PnP 개체의 나머지 부분과 동일한 디바이스 컨테이너 아래에 그룹화되지 않습니다. 운영 체제에서 큐와 PnP 개체가 분리되는 상황을 제대로 정리하는 데 충분한 정보가 없습니다. 경우에 따라 사용자의 실제 의도입니다. 포트 이름을 변경하는 사용자 또는 애플리케이션만 의도한 결과가 무엇인지 알고 있으며, 큐의 포트가 변경된 후 남은 혼란스러운 상태를 정리하는 것은 사용자/애플리케이션의 맡습니다. 다음은 적절하게 정리하는 방법을 보여 주는 지침과 함께 두 가지 예제 상황입니다.
프린터를 설정하는 IT 관리자 – IT 관리자는 WS 검색을 사용하여 네트워크에서 프린터를 찾고 TCP/IP 관리 프로세스를 좋아하기 때문에 포트를 TCP/IP로 변경합니다.
기대 – 디바이스 및 프린터 폴더에는 "디바이스"가 하나만 있습니다.
해결 방법 – IT 관리자는 디바이스 및 프린터 폴더에서 WSD PnP devnode를 제거합니다.
IHV 설치 소프트웨어 – IHV는 사용자 지정 포트 모니터와 함께 드라이버를 설치합니다(사용자 지정 포트 모니터는 v4에서 허용되지 않지만 동일한 devnode 처리는 v3 드라이버에 적용됨). IHV는 인쇄 큐의 USB 포트를 디바이스 제조업체가 만드는 포트로 변경합니다.
기대 – 디바이스 및 프린터 폴더에는 "디바이스"가 하나만 있습니다.
해결 방법 1 – PnP devnode는 여전히 필요합니다. 설치 프로그램은 PnP 개체와 일치하도록 큐 devnode의 컨테이너 ID를 변경합니다.
솔루션 2 – PnP devnode가 불필요한 경우: 설치 프로그램에서 원래 PnP 디바이스를 제거합니다.
드라이버 순위
v4 인쇄 드라이버의 도입은 플러그 앤 플레이 순위 동작을 수정하지 않습니다. 디바이스가 연결되면 점수가 가장 높은 사용 가능한 드라이버가 선택됩니다. 선택한 드라이버가 인쇄 클래스 드라이버이고 Windows 업데이트 사이트에서 더 나은 순위와 일치하는 드라이버가 있는 경우 사용자가 다음에 Windows용 업데이트를 다운로드할 때 선택한 드라이버가 자동으로 바뀝니다.
드라이버 순위에 대한 자세한 내용은 Windows에서 드라이버 순위를 지정하는 방법을 참조 하세요.
드라이버 설정 모범 사례
패키징
V4 인쇄 드라이버는 요구 사항을사용하지 않으며 공유 파일을 처리하기 위해 INF 파일 지시문 또는 핵심 드라이버 기술을 포함합니다. 따라서 v4 인쇄 드라이버는 몇 가지 예외만 제외하고 자체 포함되어야 합니다.
V4 인쇄 드라이버는 Windows에서 제공하는 일반 파일에 대한 종속성을 계속 적용할 수 있습니다. 여기에는 NTPrint.INF 또는 NTPrint4.INF의 파일이 포함됩니다. 드라이버는 v4 매니페스트 파일에서 RequiredFiles 지시문을 지정하여 이러한 파일을 포함할 수 있습니다.
디바이스 또는 PDL에 대한 기본 렌더링 기능을 제공하는 기존 인쇄 클래스 드라이버가 있는 경우 RequiredClass 지시문을 사용하여 클래스 드라이버에 종속되는 메커니즘도 있습니다. 이 지시문은 Windows에서 v4 인쇄 드라이버와 필요한 인쇄 클래스 드라이버의 파일을 사용하여 드라이버를 빌드하도록 합니다. GPD 및 PPD 파일이 병합되고 가장 구체적인 파일이 덜 특정 파일보다 우선합니다. 다음 다이어그램에서는 GPD/PPD 파일을 병합하는 데 사용되는 논리를 보여 줍니다. 또한 Bidi에서 가져온 향상된 드라이버 구성 파일도 포함합니다. JavaScript 제약 조건과 같은 다른 드라이버 파일은 드라이버 패키지에 병합되지 않습니다.
gpd/ppd 파일 병합 논리입니다.
프린터 모델 선
플러그 앤 플레이 모델 줄에서 모든 하드웨어 ID 및 CompatibleID의 암시적 순위를 유지 관리합니다. 따라서 순위와 관련하여 예측할 수 없는 동작을 방지하기 위해 파트너가 다음 모범 사례를 사용하는 것이 좋습니다.
V4 인쇄 드라이버
V4 인쇄 드라이버 INF는 두 가지 종류의 모델 줄을 정의해야 합니다.
HardwareID 줄: "드라이버 이름" = INSTALL_SECTION, busnumerator\HardwareID
PrinterDriverID 줄: "드라이버 이름" = INSTALL_SECTION,{GUID}
V4 인쇄 드라이버 INF는 개별 줄에서 버스별 하드웨어 ID를 정의해야 합니다.
"드라이버 이름" = INSTALL_SECTION,WSDPRINT\HardwareID
"드라이버 이름" = INSTALL_SECTION,USBPRINT\HardwareID
"드라이버 이름" = INSTALL_SECTION,LPTENUM\HardwareID
인쇄 클래스 드라이버
인쇄 클래스 드라이버 INF는 세 가지 종류의 모델 줄을 정의해야 합니다.
HardwareID 줄: "드라이버 이름" = INSTALL_SECTION,HardwareID
PrinterDriverID 줄: "드라이버 이름" = INSTALL_SECTION,{GUID}
CompatibleID 줄: "Print Class Driver name" = INSTALL_SECTION,,1284_CID_CompatID
인쇄 클래스 드라이버 INF는 버스 열거자(예: WSDPRINT)를 정의해서는 안 됩니다.