Share via


터미널 서버 인쇄

중요

Windows 11 버전 22H2용 WDK부터 WDF 재배포 가능 공동 설치 관리자가 더 이상 지원되지 않습니다. 이 변경을 해결하는 방법을 알아보려면 WDK 알려진 문제 문서에서 WDF 재배포 가능 공동 설치 관리자가 작동하지 않음을 참조하세요.

Microsoft Windows는 여러 사용자가 단일 서버 시스템에 연결할 수 있는 기술인 터미널 서비스를 지원합니다. 이 서버 시스템을 터미널 서버라고 합니다. 터미널 서비스에 대한 자세한 내용은 Windows SDK 설명서를 참조하세요.

Windows용 프린터 미니드라이버 또는 드라이버를 개발하는 경우 터미널 서버에 연결된 프린터를 지원하기 위해 특별한 작업을 수행할 필요가 없습니다. 그러나 WDK(Windows 드라이버 키트)에 지정된 모든 디자인, 구현 및 설치 지침을 따라야 합니다. 특히 다음 규칙을 사용해야 합니다.

모든 사용자 지정 드라이버 코드는 다시 입력해야 합니다. 사용자 모드 코드는 중요한 섹션 개체를 사용해야 합니다(Windows SDK 설명서에 설명됨). 커널 모드 코드는 세마포를 사용해야 합니다( EngCreateSemaphore 및 관련 함수 참조).

프린터 드라이버 및 사용자 지정 스풀러 구성 요소는 WDK의 적절한 섹션에 설명된 대로 이러한 드라이버 및 스풀러 구성 요소에 대해 특별히 제공된 인터페이스를 통해서만 레지스트리에 액세스해야 합니다.

설치 고려 사항

일반적으로 설치를 위해 수행해야 하는 작업은 사용자가 프린터 추가 마법사를 호출할 때 Microsoft의 프린터 클래스 설치 관리자가 읽을 수 있는 INF 파일을 제공하는 것입니다. 경우에 따라 사용자 지정 설치 코드(공동 설치 관리자 또는 클래스 설치 관리자)도 필요합니다. 사용자 지정 설정 코드를 만들어야 하는 경우 다음을 기억하세요.

  • 사용자 또는 설치 코드는 터미널 서버를 설치 모드로 전환해야 합니다. 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.

  • 시스템 파일을 바꾸려고 시도하지 마세요. Windows 파일 보호는 시스템 파일 교체를 금지합니다.

  • 시스템을 최대한 많이 다시 부팅하지 않아도 됩니다. 다음 지침을 사용하세요.

    1. 변경되지 않은 드라이버 파일을 바꾸지 마세요. 예를 들어 최신 버전이 이미 설치된 경우 여러 디바이스에서 공유하는 파일을 업데이트하면 안 됩니다.

    2. 파일을 교체해야 하는 경우 설치 코드는 이전 버전을 언로드한 다음 새 버전을 로드하는 단계를 수행해야 합니다(예: 드라이버 서비스를 중지하고 파일을 교체한 다음 서비스를 다시 시작).

    3. 사용자가 로그오프한 다음 다시 로그온하도록 요구하는 것이 시스템 재부팅을 요구하는 것이 좋습니다.

공동 설치 관리자 및 클래스 설치 관리자에 대한 자세한 내용은 클래스 설치 관리자 및 공동 설치 관리자 작성을 참조하세요.

사용자 지정 설치 코드를 작성하기 전에 Windows SDK 설명서에 제공된 터미널 서비스 프로그래밍 지침을 읽어야 합니다.

사용자 인터페이스 고려 사항

사용자가 실행하는 사용자 지정 설정 코드는 사용자 인터페이스를 표시할 수 있습니다.

거의 모든 프린터 드라이버 코드는 스풀러의 실행 컨텍스트에서 실행되므로 사용자 인터페이스를 표시할 수 없습니다. 사용자 인터페이스는 프린터 인터페이스 DLL에서만 표시할 수 있으며 다음 함수 내에서만 표시할 수 있습니다.

  • 속성 페이지를 만드는 DrvDevicePropertySheetsDrvDocumentPropertySheets 함수입니다.

  • 프린터 이벤트를 식별하는 이벤트 코드를 수신하는 DrvPrinterEvent 함수입니다. 함수는 PRINTER_EVENT_ADD_CONNECTION 및 PRINTER_EVENT_DELETE_CONNECTION 이벤트 코드에 대해서만 사용자 인터페이스를 표시할 수 있습니다.

다른 모든 프린터 드라이버 코드는 스풀러의 컨텍스트에서 실행됩니다. 이 컨텍스트에서 MessageBox 또는 MessageBoxEx를 호출할 수 있지만 MB_SERVICE_NOTIFICATION 설정해야 합니다. 이러한 함수는 Windows SDK 설명서에 설명되어 있습니다.