SetPrinterDataEx 함수

SetPrinterDataEx 함수는 프린터 또는 인쇄 서버의 구성 데이터를 설정합니다. 함수는 구성 데이터를 프린터의 레지스트리 키 아래에 저장합니다.

구문

DWORD SetPrinterDataEx(
  _In_ HANDLE  hPrinter,
  _In_ LPCTSTR pKeyName,
  _In_ LPCTSTR pValueName,
  _In_ DWORD   Type,
  _In_ LPBYTE  pData,
  _In_ DWORD   cbData
);

매개 변수

hPrinter [in]

함수가 구성 데이터를 설정하는 프린터 또는 인쇄 서버에 대한 핸들입니다. OpenPrinter, OpenPrinter2 또는 AddPrinter 함수를 사용하여 프린터 핸들을 검색합니다.

pKeyName [in]

설정할 값이 포함된 키를 지정하는 null로 끝나는 문자열에 대한 포인터입니다. 지정된 키 또는 하위 키가 없으면 함수에서 해당 키를 만듭니다.

DS(디렉터리 서비스)에 게시할 수 있는 구성 데이터를 저장하려면 다음 미리 정의된 레지스트리 키 중 하나를 지정합니다.

의미
SPLDS_DRIVER_KEY
프린터 드라이버는 이 키를 사용하여 드라이버 속성을 저장합니다.
SPLDS_SPOOLER_KEY
예약되어 있습니다. 인쇄 스풀러에서만 내부 스풀러 속성을 저장하는 데 사용됩니다.
SPLDS_USER_KEY
애플리케이션은 이 키를 사용하여 프린터 자산 번호와 같은 프린터 속성을 저장합니다.

SPLDS_USER_KEY 키 아래에 저장된 값은 스키마에 해당 속성이 있는 경우에만 디렉터리 서비스에 게시됩니다. 도메인 관리자가 아직 없는 경우 속성을 만들어야 합니다. SetPrinterDataEx를 사용하여 값을 추가하거나 변경한 후 사용자 정의 속성을 게시하려면 Level = 7이고 PRINTER_INFO_7dwAction 멤버가 DSPRINT_UPDATE 설정된 SetPrinter를 호출합니다.

다른 키를 지정하여 비 DS 구성 데이터를 저장할 수 있습니다. 백슬래시( \ ) 문자를 구분 기호로 사용하여 하나 이상의 하위 키가 있는 경로를 지정합니다.

hPrinter가 프린터에 대한 핸들이고 pKeyNameNULL이거나 빈 문자열인 경우 SetPrinterDataExERROR_INVALID_PARAMETER 반환합니다.

hPrinter가 인쇄 서버에 대한 핸들인 경우 pKeyName은 무시됩니다.

SPLDS_SPOOLER_KEY 사용하지 마세요. 스풀러 프린터 속성을 변경하려면 Level = 2와 함께 SetPrinter를 사용합니다.

pValueName [in]

설정할 데이터를 식별하는 null로 끝나는 문자열에 대한 포인터입니다.

프린터의 경우 이 문자열은 pKeyName 키 아래의 값 이름을 지정합니다.

인쇄 서버의 경우 이 문자열은 다음 주의 섹션에 나열된 미리 정의된 문자열 중 하나입니다.

[ in] 입력

pData 매개 변수가 가리키는 데이터 형식을 나타내는 코드입니다. 가능한 형식 코드 목록은 레지스트리 값 형식을 참조하세요.

pKeyName이 미리 정의된 디렉터리 서비스 키 중 하나를 지정하는 경우 Type은 REG_SZ, REG_MULTI_SZ, REG_DWORD 또는 REG_BINARY 합니다. REG_BINARY 사용하는 경우 cbData는 1이어야 하며 디렉터리 서비스는 데이터를 부울 값으로 처리합니다.

pData [in]

프린터 구성 데이터를 포함하는 버퍼에 대한 포인터입니다.

cbData [in]

배열의 크기(바이트)입니다.

반환 값

함수가 성공하면 반환 값이 ERROR_SUCCESS.

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

설명

참고

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

프린터 또는 인쇄 스풀러에 대한 기존 구성 데이터를 검색하려면 GetPrinterDataEx 함수를 호출합니다.

pKeyName 매개 변수가 "PrinterDriverData"로 설정된 SetPrinterDataEx를 호출하는 것은 SetPrinterData 함수를 호출하는 것과 같습니다.

hPrinter가 인쇄 서버에 대한 핸들인 경우 pValueName은 다음 미리 정의된 값 중 하나를 지정할 수 있습니다.

주석
SPLREG_ALLOW_USER_MANAGEFORMS Windows XP SP2(서비스 팩 2) 이상
Windows Server 2003 SP1(서비스 팩 1) 이상
SPLREG_BEEP_ENABLED
SPLREG_DEFAULT_SPOOL_DIRECTORY
SPLREG_EVENT_LOG
SPLREG_NET_POPUP Windows Server 2003 이상에서는 지원되지 않음
SPLREG_PORT_THREAD_PRIORITY_DEFAULT
SPLREG_PORT_THREAD_PRIORITY
SPLREG_PRINT_DRIVER_ISOLATION_GROUPS Windows 7 이상
SPLREG_PRINT_DRIVER_ISOLATION_TIME_BEFORE_RECYCLE Windows 7 이상
SPLREG_PRINT_DRIVER_ISOLATION_MAX_OBJECTS_BEFORE_RECYCLE Windows 7 이상
SPLREG_PRINT_DRIVER_ISOLATION_IDLE_TIMEOUT Windows 7 이상
SPLREG_PRINT_DRIVER_ISOLATION_EXECUTION_POLICY Windows 7 이상
SPLREG_PRINT_DRIVER_ISOLATION_OVERRIDE_POLICY Windows 7 이상
SPLREG_RETRY_POPUP 반환이 성공적이면 pData 는 서버가 모든 작업에 대해 팝업 창을 다시 시도하도록 설정된 경우 1을, 서버가 모든 작업에 대해 팝업 창을 다시 시도하지 않는 경우 0을 포함합니다.
Windows Server 2003 이상에서는 지원되지 않음
SPLREG_SCHEDULER_THREAD_PRIORITY
SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT
SPLREG_WEBSHAREMGMT Windows Server 2003 이상

다음 미리 정의된 값 중 하나를 pValueName 으로 전달하면 오류가 발생할 때 풀 인쇄 동작이 설정됩니다.

주석
SPLREG_RESTART_JOB_ON_POOL_ERROR pData 값은 오류가 발생한 후 다른 포트에서 작업이 다시 시작되는 시간(초)을 나타냅니다. 이 설정은 SPLREG_RESTART_JOB_ON_POOL_ENABLED 함께 사용됩니다.
SPLREG_RESTART_JOB_ON_POOL_ENABLED pData의 0이 아닌 값은 SPLREG_RESTART_JOB_ON_POOL_ERROR 사용하도록 설정되어 있음을 나타냅니다.

SPLREG_RESTART_JOB_ON_POOL_ERROR 지정된 시간은 최소 시간입니다. 이 레지스트리 키 아래의 레지스트리 값인 다음 포트 모니터 설정에 따라 실제 시간이 더 길어질 수 있습니다.

HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\<MonitorName>\Ports

RegSetValueEx 함수를 호출하여 이러한 값을 설정합니다.

포트 모니터 설정 데이터 형식 의미
StatusUpdateEnabled REG_DWORD 0이 아닌 값이면 포트 모니터가 포트 상태 스풀러를 업데이트할 수 있도록 합니다.
StatusUpdateInterval REG_DWORD 포트 모니터가 포트 상태 스풀러를 업데이트하는 간격(분)을 지정합니다.

스풀러가 풀에서 사용 가능한 다음 프린터로 작업을 리디렉션하도록 하려면(인쇄 작업이 설정된 시간 내에 인쇄되지 않은 경우) 포트 모니터는 SNMP를 지원해야 하며 풀의 네트워크 포트는 "SNMP 상태 사용하도록 설정"으로 구성되어야 합니다. SNMP를 지원하는 포트 모니터는 표준 TCP/IP 포트 모니터입니다.

Windows 7 이상 버전의 Windows에서는 인쇄 서버로 전송되는 인쇄 작업이 기본적으로 클라이언트에서 렌더링됩니다. pKeyName을 "PrinterDriverData"로 설정하고 pValueName을 다음 표의 설정 값으로 설정하여 인쇄 작업의 클라이언트 쪽 렌더링을 구성할 수 있습니다.

설정 데이터 형식 Description
EMFDespoolingSetting REG_DWORD 값이 0이거나 이 값이 레지스트리에 없으면 인쇄 작업의 기본 클라이언트 쪽 렌더링을 사용하도록 설정합니다.
값 1은 인쇄 작업의 클라이언트 쪽 렌더링을 사용하지 않도록 설정합니다.
ForceClientSideRendering REG_DWORD 값이 0이거나 이 값이 레지스트리에 없으면 인쇄 작업이 클라이언트에서 렌더링됩니다. 클라이언트에서 인쇄 작업을 렌더링할 수 없는 경우 서버에서 렌더링됩니다. 인쇄 작업을 서버에서 렌더링할 수 없는 경우 실패합니다.
값이 1이면 클라이언트에서 인쇄 작업이 렌더링됩니다. 인쇄 작업을 클라이언트에서 렌더링할 수 없는 경우 실패합니다.

요구 사항

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

추가 정보

인쇄

인쇄 스풀러 API 함수

GetPrinterDataEx

OpenPrinter

SetPrinter

PRINTER_INFO_7