AddPrinter 함수

AddPrinter 함수는 지정된 서버에 대해 지원되는 프린터 목록에 프린터를 추가합니다.

구문

HANDLE AddPrinter(
  _In_ LPTSTR *pName,
  _In_ DWORD  Level,
  _In_ LPBYTE pPrinter
);

매개 변수

pName [in]

프린터를 설치해야 하는 서버의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다. 이 문자열이 NULL이면 프린터가 로컬로 설치됩니다.

수준 [in]

pPrinter가 가리키는 구조체의 버전입니다. 이 값은 2여야 합니다.

pPrinter [in]

프린터에 대한 정보를 포함하는 PRINTER_INFO_2 구조체에 대한 포인터입니다. AddPrinter를 호출하기 전에 이 구조체의 pPrinterName, pPortName, pDriverNamepPrintProcessor 멤버에 대해 NULL이 아닌 값을 지정해야 합니다.

반환 값

함수가 성공하면 반환 값은 새 프린터 개체에 대한 핸들(스레드로부터 안전하지 않음)입니다. 핸들을 완료하면 ClosePrinter 함수에 전달하여 닫습니다.

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

설명

DllMain에서 이 메서드를 호출하지 마세요.

참고

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

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

반환된 핸들이 스레드로부터 안전하지 않습니다. 호출자가 여러 스레드에서 동시에 사용해야 하는 경우 동기화 함수를 사용하여 프린터 핸들에 대한 사용자 지정 동기화 액세스를 제공해야 합니다. 사용자 지정 코드를 작성하지 않도록 애플리케이션은 필요에 따라 각 스레드에서 프린터 핸들을 열 수 있습니다.

다음은 AddPrinter 함수가 호출되기 전에 설정할 수 있는 PRINTER_INFO_2 구조체의 멤버입니다.

  • 특성
  • pPrintProcessor
  • DefaultPriority
  • 우선 순위
  • pComment
  • pSecurityDescriptor
  • pDatatype
  • pSepFile
  • pDevMode
  • pShareName
  • pLocation
  • StartTime
  • pParameters
  • UntilTime

PRINTER_INFO_2 구조체의 Status, cJobsAveragePPM 멤버는 GetPrinter 함수에서 사용하도록 예약되어 있습니다. AddPrinter를 호출하기 전에 설정하면 안 됩니다.

pSecurityDescriptorNULL인 경우 시스템은 프린터에 기본 보안 설명자를 할당합니다. 기본 보안 설명자에는 다음과 같은 권한이 있습니다.

Description
관리자 및 고급 사용자 인쇄 큐에 대한 모든 권한을 켭니다. 즉, 이러한 그룹의 멤버는 큐를 인쇄하고, 관리하고(큐를 삭제하고, 보안 설명자를 포함하여 큐의 모든 설정을 변경할 수 있음), 모든 사용자의 인쇄 작업(삭제, 일시 중지, 다시 시작, 작업 다시 시작)을 관리할 수 있습니다. Windows XP Professional 이전에는 Power Users가 없습니다.
만든 이/소유자 자체 작업을 관리할 수 있습니다. 즉, 작업을 제출하는 사용자는 자신의 작업을 관리(삭제, 일시 중지, 다시 시작, 다시 시작)할 수 있습니다.
모든 사람 및 표준 읽기 제어를 실행합니다. 즉, 모든 사용자 그룹의 구성원이 인쇄 큐의 속성을 인쇄하고 읽을 수 있습니다.

애플리케이션에서 AddPrinter 함수를 사용하여 프린터 개체를 만든 후에는 PrinterProperties 함수를 사용하여 프린터 개체와 연결된 프린터 드라이버에 대한 올바른 설정을 지정해야 합니다.

AddPrinter 함수는 해당 개체가 삭제 보류 중으로 표시되지 않는 한 이름이 같은 프린터 개체가 이미 있는 경우 오류를 반환합니다. 이 경우 기존 프린터는 삭제되지 않으며 AddPrinter 만들기 매개 변수를 사용하여 기존 프린터 설정을 변경합니다(애플리케이션에서 SetPrinter 함수를 사용한 것처럼).

EnumPrintProcessors 함수를 사용하여 서버에 설치된 인쇄 프로세서 집합을 열거합니다. EnumPrintProcessorDatatypes 함수를 사용하여 인쇄 프로세서에서 지원하는 데이터 형식 집합을 열거합니다. EnumPorts 함수를 사용하여 사용 가능한 포트 집합을 열거합니다. EnumPrinterDrivers 함수를 사용하여 설치된 프린터 드라이버를 열거합니다.

AddPrinter 함수의 호출자는 프린터를 만들 서버에 대한 SERVER_ACCESS_ADMINISTER 액세스 권한이 있어야 합니다. 함수에서 반환된 핸들에는 PRINTER_ALL_ACCESS 권한이 있으며 프린터에서 관리 작업을 수행하는 데 사용할 수 있습니다.

DrvPrinterEvent 함수가 PRINTER_EVENT_FLAG_NO_UI 플래그를 전달하면 드라이버가 DrvPrinterEvent 중에 UI 호출을 사용하면 안 됩니다. UI 관련 작업을 수행하려면 설치 관리자가 프린터의 .inf 파일에서 VendorSetup 항목을 사용하거나 플러그 앤 플레이 디바이스의 경우 설치 관리자가 디바이스별 공동 설치 관리자를 사용할 수 있습니다. VendorSetup에 대한 자세한 내용은 Microsoft DDK(Windows 드라이버 개발 키트)를 참조하세요.

ICF(인터넷 연결 방화벽)는 기본적으로 프린터 포트를 차단하지만 AddPrinter를 실행할 때 파일 및 인쇄 공유에 대한 예외가 사용됩니다.

요구 사항

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

추가 정보

인쇄

인쇄 스풀러 API 함수

ClosePrinter

DeletePrinter

EnumPorts

EnumPrinterDrivers

EnumPrintProcessors

EnumPrintProcessorDatatypes

GetPrinter

PRINTER_INFO_2

PrinterProperties

SetPrinter