다음을 통해 공유


프린터 드라이버 격리

중요

인쇄 지원 앱(PSA)과 함께 Microsoft의 IPP 받은 편지함 클래스 드라이버를 사용하여 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하는 것이 좋습니다.

자세한 내용은 인쇄 지원 앱 디자인 가이드를 참조하세요.

프린터 드라이버 격리는 인쇄 스풀러가 실행되는 프로세스와 별개인 프로세스에서 프린터 드라이버를 실행할 수 있도록 하여 Windows 인쇄 서비스의 안정성을 향상시킵니다.

프린터 드라이버 격리에 대한 지원은 Windows 7, Windows Server 2008 R2 이상 운영 체제에서 구현됩니다.

Windows 7 및 Windows Server 2008 R2부터 받은 편지함 프린터 드라이버는 프린터 드라이버 격리를 지원하고 격리된 프로세스에서 실행할 수 있어야 합니다.

이전 버전의 Windows에서는 프린터 드라이버가 항상 스풀러와 동일한 프로세스에서 실행되었습니다. 스풀러 프로세스에서 실행된 프린터 드라이버 구성 요소에는 다음이 포함됩니다.

  • 드라이버 구성 모듈 인쇄

  • 인쇄 프로세서

  • 렌더링 모듈

단일 인쇄 드라이버 구성 요소가 실패하면 인쇄 하위 시스템이 실패하여 모든 사용자 및 모든 인쇄 구성 요소에 대한 인쇄 작업이 중단될 수 있습니다.

Windows 7 및 Windows Server 2008 R2부터 관리자는 스풀러 프로세스와 별개인 격리된 프로세스에서 실행되도록 프린터 드라이버를 구성할 수 있습니다. 관리자는 드라이버를 격리하여 드라이버 구성 요소의 오류가 인쇄 서비스를 중지하지 못하도록 방지할 수 있습니다.

스풀러 함수에 대한 자세한 내용은 스풀러 구성 요소 함수 및 구조를 참조하세요.

INF 파일의 드라이버 격리 지원

기본적으로 프린터 드라이버를 설치하는 INF 파일이 드라이버가 드라이버 격리를 지원함을 나타내지 않는 경우 프린터 클래스 설치 관리자는 스풀러 프로세스에서 실행되도록 드라이버를 구성합니다. 그러나 INF 파일에서 드라이버가 드라이버 격리를 지원한다는 것을 나타내는 경우 설치 관리자는 격리된 프로세스에서 실행되도록 드라이버를 구성합니다. 관리자는 이러한 구성 설정을 재정의하고 각 드라이버에 대해 스풀러 프로세스에서 또는 격리된 프로세스에서 드라이버를 실행할지 여부를 지정할 수 있습니다.

드라이버 격리를 지원하기 위해 프린터 드라이버를 설치하는 INF 파일은 DriverIsolation 키워드를 사용하여 드라이버가 프린터 드라이버 격리를 지원하는지 여부를 나타낼 수 있습니다. DriverIsolation=2를 설정하면 드라이버가 드라이버 격리를 지원합니다. DriverIsolation=0을 설정하면 드라이버가 드라이버 격리를 지원하지 않음을 나타냅니다. INF 파일에서 DriverIsolation 키워드를 생략하면 DriverIsolation=0을 설정하는 것과 동일한 효과가 있습니다.

드라이버 격리 설정에 대한 스풀러 함수

다음 표에서는 관리자가 드라이버 격리 설정을 구성하는 데 사용할 수 있는 스풀러 함수를 보여 줍니다.

함수 이름 작업
GetPrinterDataEx 프린터에 대한 드라이버 격리 설정을 가져옵니다.
SetPrinterDataEx 프린터에 대한 드라이버 격리 설정을 지정합니다.
EnumPrinterDataEx 프린터에 대한 드라이버 격리 설정을 열거합니다.
FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification 프린터의 드라이버 격리 설정 변경에 대한 알림을 요청합니다.

데이터의 형식은 다음과 같습니다.

  • 각 그룹의 드라이버는 '\'로 구분됩니다.

  • 각 드라이버 그룹은 '\\'로 구분됩니다.

첫 번째 그룹은 드라이버를 스풀러 프로세스에 로드합니다. 각 후속 그룹은 그룹당 격리된 프로세스에서 드라이버를 로드합니다. 두 번째 그룹은 다른 격리 가능 드라이버가 기본적으로 로드되는 '공유' 그룹으로 간주됩니다.

관리를 통해 드라이버 격리 모드 구성

컴퓨터 관리자는 Windows 인쇄 관리 콘솔을 사용하거나 Windows 스풀러 함수를 호출하여 컴퓨터에 설치된 각 프린터 드라이버에 대한 드라이버 격리 설정을 구성할 수 있습니다. 관리자는 다음 표에 나열된 설정 중 하나를 사용하도록 드라이버를 구성합니다.

드라이버 격리 모드 의미
공유됨 다른 프린터 드라이버와 공유되지만 스풀러 프로세스와 별개인 프로세스에서 드라이버를 실행합니다.
Isolated 스풀러 프로세스와 별개이고 다른 프린터 드라이버와 공유되지 않는 프로세스에서 드라이버를 실행합니다.
없음 스풀러 프로세스에서 드라이버를 실행합니다.

프린터 드라이버가 공유 모드에서 실행할 수 있는 것이 가장 좋습니다. 즉, 다른 프린터 드라이버와 공유되지만 스풀러 프로세스와는 별개인 격리된 프로세스에서 실행됩니다. 드라이버는 스풀러 프로세스와 별도로 프로세스에서 실행할 수 있지만 프로세스를 다른 드라이버와 공유하는 데 어려움이 있는 경우 격리 모드로 실행해야 할 수 있습니다. 예를 들어 잘못 디자인된 드라이버에는 관련 드라이버 또는 동일한 드라이버의 다른 버전과 충돌하는 파일 이름이 있거나 드라이버가 자주 오류가 발생하거나 동일한 프로세스에서 실행되는 다른 드라이버의 작동을 방해하는 메모리 누수가 있을 수 있습니다.

문제 해결을 지원하기 위해 도메인 관리자는 도메인의 컴퓨터에서 드라이버 격리 기능을 사용하지 않도록 설정하거나 관리자가 컴퓨터의 모든 프린터 드라이버를 격리 모드로 실행하도록 강제할 수 있습니다. 격리 모드에서 각 드라이버는 스풀러와 다른 프린터 드라이버와는 별도로 프로세스에서 실행되어야 합니다.

그룹 정책에 의해 드라이버 격리를 사용하지 않도록 설정하면 모든 프린터 드라이버에 대해 격리가 해제됩니다. 격리를 사용하도록 설정하면 개별 드라이버가 모드로 확인됩니다. 드라이버에 격리 모드가 설정된 경우 레지스트리 항목에 따라 공유, 격리 또는 없음 모드로 실행됩니다. 그러나 드라이버에 격리 모드가 설정되어 있지 않고 격리와 호환되는 경우 공유 모드에서 실행됩니다. 드라이버가 모드와 호환되지 않는 경우 그룹 정책 재정의는 드라이버가 공유 모드에서 실행되는지 또는 없음 모드에서 실행되는지 여부를 결정합니다.

다음 차트에서는 드라이버 격리 모드를 선택하기 위한 의사 결정 맵을 보여 줍니다.

드라이버 격리 모드를 선택하기 위한 순서도입니다.

드라이버 격리에서 허용되는 스풀러 함수

드라이버 격리에서 특정 함수만 허용됩니다.

Spoolss.dll 함수

다음 함수는 spoolss.dll 내보내며 spoolss.lib에 연결하여 스풀러 플러그 인에 사용할 수 있습니다.

WinSpool.drv 함수

다음 함수는 winspool.drv에서 내보내며 Winspool.h에 연결하여 스풀러 플러그 인에 사용할 수 있습니다.

추가 정보

스풀러 구성 요소 함수 및 구조체