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

프린터 _ 정보 _ 2 구조의 상태, cJobsAveragePPM 멤버는 GetPrinter 함수에서 사용하도록 예약되어 있습니다. AddPrinter 를 호출하기 전에 설정하면 안 됩니다.

pSecurityDescriptor가 NULL이면 시스템에서 프린터에 기본 보안 설명자를 할당합니다. 기본 보안 설명자는 다음과 같은 권한을 가합니다.

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

애플리케이션에서 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 Windows DDK(드라이버 개발 키트)를 참조하세요.

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

프린터 _ 정보 _ 2

PrinterProperties

SetPrinter