다음을 통해 공유


AddPrinterDriverEx 함수

AddPrinterDriverEx 함수는 로컬 또는 원격 프린터 드라이버를 설치하고 구성, 데이터 및 드라이버 파일을 연결합니다. AddPrinterDriver의 기능 외에도 엄격한 업그레이드, 엄격한 다운그레이드, 최신 파일만 복사 및 모든 파일 복사(파일 타임스탬프에 관계 없이)를 허용하는 옵션도 있습니다.

참고

드라이버 패키지 없이 프린터 드라이버를 설치하는 것은 더 이상 권장되지 않습니다. 대신 InstallPrinterDriverFromPackage 를 사용합니다.

구문

BOOL AddPrinterDriverEx(
  _In_    LPTSTR pName,
  _In_    DWORD  Level,
  _Inout_ LPBYTE pDriverInfo,
  _In_    DWORD  dwFileCopyFlags
);

매개 변수

pName [in]

드라이버를 설치해야 하는 서버의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다. 이 매개 변수가 NULL이면 함수는 로컬 컴퓨터에 드라이버를 설치합니다.

수준 [in]

pDriverInfo가 가리키는 구조체의 버전입니다. 이 값은 2, 3, 4, 6 또는 8일 수 있습니다.

pDriverInfo [in, out]

프린터 드라이버 정보를 포함하는 구조체에 대한 포인터입니다. 다음 중 하나일 수 있습니다.

수준 값 DRIVER_INFO_* 구조체
2
DRIVER_INFO_2
3
DRIVER_INFO_3
4
DRIVER_INFO_4
6
DRIVER_INFO_6
8
DRIVER_INFO_8

pDriverInfo가 가리키는 구조체의 pEnvironment 멤버가 NULL인 경우 함수는 대상/서버 환경이 아닌 호출자/클라이언트의 현재 환경을 사용합니다.

dwFileCopyFlags [in]

드라이버 파일을 복사하는 옵션입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
APD_COPY_ALL_FILES
프린터 드라이버를 추가하고 프린터 드라이버 디렉터리의 모든 파일을 복사합니다. 파일 타임스탬프는 이 옵션으로 무시됩니다.
APD_COPY_FROM_DIRECTORY
DRIVER_INFO_6 구조에 지정된 정규화된 파일 이름을 사용하여 프린터 드라이버를 추가합니다. 이 플래그는 다른 복사 플래그 중 하나와 함께 ORed입니다. 이 플래그를 설정하면 파일이 DRIVER_INFO_6 구조에 의해 존재하도록 지정된 위치에 없는 경우 AddPrinterDriverEx가 실패합니다. 파일을 시스템의 프린터 드라이버 디렉터리에 복사할 필요가 없습니다. 설명을 참조하세요.
Windows 2000: 이 플래그는 지원되지 않습니다.
APD_COPY_NEW_FILES
프린터 드라이버를 추가하고 현재 사용 중인 해당 파일보다 최신인 프린터 드라이버 디렉터리에 파일을 복사합니다. 이 플래그는 AddPrinterDriver의 동작을 에뮬레이트합니다.
APD_STRICT_DOWNGRADE
프린터 드라이버 디렉터리의 모든 파일이 현재 사용 중인 해당 파일보다 오래된 경우에만 프린터 드라이버를 추가합니다.
APD_STRICT_UPGRADE
프린터 드라이버 디렉터리의 모든 파일이 현재 사용 중인 해당 파일보다 최신인 경우에만 프린터 드라이버를 추가합니다.

반환 값

함수가 성공하면 반환 값은 0이 아닌 값입니다.

함수가 실패하면 반환 값은 0입니다.

프린터 드라이버가 운영 체제에서 작업하는 데 문제가 있는 것으로 알려진 경우 AddPrinterDriverEx 는 다음 오류 코드 중 하나로 실패합니다.

오류 코드 의미
ERROR_PRINTER_DRIVER_BLOCKED 드라이버가 운영 체제에서 작동하지 않습니다.
ERROR_PRINTER_DRIVER_WARNED 드라이버는 운영 체제에서 신뢰할 수 없습니다. 그러나 APD_INSTALL_WARNED_DRIVER 지정되면 드라이버가 설치되고 경고가 제공되지 않습니다.

자세한 내용은 주의 섹션을 참조하십시오.

설명

참고

이는 차단 또는 동기 함수이며 즉시 반환되지 않을 수 있습니다. 이 함수가 얼마나 빨리 반환되는지는 네트워크 상태, 인쇄 서버 구성 및 애플리케이션을 작성할 때 예측하기 어려운 프린터 드라이버 구현 요소와 같은 런타임 요인에 따라 달라집니다. 사용자 인터페이스와의 상호 작용을 관리하는 스레드에서 이 함수를 호출하면 애플리케이션이 응답하지 않는 것처럼 보일 수 있습니다.

호출자에게 는 SeLoadDriverPrivilege가 있어야 합니다.

AddPrinterDriverEx 함수를 호출하기 전에 드라이버에 필요한 모든 파일을 시스템의 프린터 드라이버 디렉터리에 복사해야 합니다. 이 디렉터리의 이름을 검색하려면 GetPrinterDriverDirectory 함수를 호출합니다.

현재 설치된 프린터 드라이버를 확인하려면 EnumPrinterDrivers 함수를 호출합니다.

프린터 드라이버가 성공적으로 추가된 경우 함수는 DrvDriverEvent(DRIVER_EVENT_INITIALIZE, Level, DRIVER_INFO_*, lparam) 함수를 호출하여 드라이버가 프린터 드라이버를 설치하는 동안 필요한 초기화를 수행할 수 있도록 합니다. DrvDriverEvent에 대한 자세한 내용은 Microsoft DDK(Windows 드라이버 개발 키트)를 참조하세요.

드라이버가 DrvDriverEvent를 호출하는 동안에는 UI 호출을 사용하지 않아야 합니다. UI 관련 작업을 수행하려면 설치 관리자가 프린터의 .inf 파일에서 VendorSetup 항목을 사용하거나 플러그 앤 플레이 디바이스의 경우 설치 관리자가 디바이스별 공동 설치 관리자를 사용할 수 있습니다. VendorSetup에 대한 자세한 내용은 DDK를 참조하세요.

DRIVER_INFO_6 구조에서 참조되는 파일은 호출이 이루어지는 컴퓨터에 로컬이어야 합니다. UNC 이름이 로컬 컴퓨터인 경우 파일 이름은 UNC 이름이 될 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버
Windows 2000 Server[데스크톱 앱만]
헤더
Winspool.h(Windows.h 포함)
라이브러리
Winspool.lib
DLL
Winspool.drv
유니코드 및 ANSI 이름
AddPrinterDriverExW (유니코드) 및 AddPrinterDriverExA (ANSI)

추가 정보

인쇄

인쇄 스풀러 API 함수

AddPrinterDriver

DRIVER_INFO_2

DRIVER_INFO_3

DRIVER_INFO_4

DRIVER_INFO_6

DeletePrinterDriverEx

EnumPrinterDrivers

GetPrinterDriverDirectory