Fungsi SetPrinterDataEx

Fungsi SetPrinterDataEx mengatur data konfigurasi untuk printer atau server cetak. Fungsi ini menyimpan data konfigurasi di bawah kunci registri printer.

Sintaks

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

Parameter

hPrinter [in]

Handel ke printer atau server cetak yang fungsinya mengatur data konfigurasi. Gunakan fungsi OpenPrinter, OpenPrinter2, atau AddPrinter untuk mengambil handel printer.

pKeyName [in]

Penunjuk ke string yang dihentikan null yang menentukan kunci yang berisi nilai yang akan diatur. Jika kunci atau subkunci yang ditentukan tidak ada, fungsi akan membuatnya.

Untuk menyimpan data konfigurasi yang dapat diterbitkan di layanan direktori (DS), tentukan salah satu kunci registri yang telah ditentukan sebelumnya berikut.

Nilai Makna
SPLDS_DRIVER_KEY
Pengandar pencetak menggunakan kunci ini untuk menyimpan properti pengandar.
SPLDS_SPOOLER_KEY
Dicadangkan. Hanya digunakan oleh penampung cetak untuk menyimpan properti penampung internal.
SPLDS_USER_KEY
Aplikasi menggunakan kunci ini untuk menyimpan properti printer seperti nomor aset printer.

Nilai yang disimpan di bawah kunci SPLDS_USER_KEY diterbitkan di layanan direktori hanya jika ada properti yang sesuai dalam skema. Administrator domain harus membuat properti jika belum ada. Untuk menerbitkan properti yang ditentukan pengguna setelah Anda menggunakan SetPrinterDataEx untuk menambahkan atau mengubah nilai, panggil SetPrinter dengan Level = 7 dan dengan anggota dwActionPRINTER_INFO_7 diatur ke DSPRINT_UPDATE.

Anda dapat menentukan kunci lain untuk menyimpan data konfigurasi non-DS. Gunakan karakter garis miring terbalik ( \ ) sebagai pemisah untuk menentukan jalur yang memiliki satu atau beberapa subkunci.

Jika hPrinter adalah handel ke printer dan pKeyName adalah NULL atau string kosong, SetPrinterDataEx mengembalikan ERROR_INVALID_PARAMETER.

Jika hPrinter adalah handel ke server cetak, pKeyName diabaikan.

Jangan gunakan SPLDS_SPOOLER_KEY. Untuk mengubah properti printer penampung, gunakan SetPrinter dengan Level = 2.

pValueName [in]

Penunjuk ke string yang dihentikan null yang mengidentifikasi data yang akan diatur.

Untuk printer, string ini menentukan nama nilai di bawah kunci pKeyName .

Untuk server cetak, string ini adalah salah satu string yang telah ditentukan sebelumnya yang tercantum di bagian Keterangan berikut.

Ketik [in]

Kode yang menunjukkan jenis data yang diacu oleh parameter pData . Untuk daftar kode jenis yang mungkin, lihat Jenis Nilai Registri.

Jika pKeyName menentukan salah satu kunci layanan direktori yang telah ditentukan sebelumnya, Jenis harus REG_SZ, REG_MULTI_SZ, REG_DWORD, atau REG_BINARY. Jika REG_BINARY digunakan, cbData harus sama dengan 1, dan layanan direktori memperlakukan data sebagai nilai Boolean.

pData [in]

Penunjuk ke buffer yang berisi data konfigurasi printer.

cbData [in]

Ukuran, dalam byte, dari array.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan adalah ERROR_SUCCESS.

Jika fungsi gagal, nilai yang dikembalikan adalah nilai kesalahan.

Keterangan

Catatan

Ini adalah fungsi pemblokiran atau sinkron dan mungkin tidak segera kembali. Seberapa cepat fungsi ini kembali tergantung pada faktor run-time seperti status jaringan, konfigurasi server cetak, dan faktor implementasi driver printer yang sulit diprediksi saat menulis aplikasi. Memanggil fungsi ini dari utas yang mengelola interaksi dengan antarmuka pengguna dapat membuat aplikasi tampak tidak responsif.

Untuk mengambil data konfigurasi yang ada untuk printer atau penampung cetak, panggil fungsi GetPrinterDataEx .

Memanggil SetPrinterDataEx dengan parameter pKeyName yang diatur ke "PrinterDriverData" setara dengan memanggil fungsi SetPrinterData .

Jika hPrinter adalah handel ke server cetak, pValueName dapat menentukan salah satu nilai yang telah ditentukan sebelumnya berikut ini.

Nilai Komentar
SPLREG_ALLOW_USER_MANAGEFORMS Windows XP dengan Paket Layanan 2 (SP2) dan yang lebih baru
Windows Server 2003 dengan Paket Layanan 1 (SP1) dan yang lebih baru
SPLREG_BEEP_ENABLED
SPLREG_DEFAULT_SPOOL_DIRECTORY
SPLREG_EVENT_LOG
SPLREG_NET_POPUP Tidak didukung di Windows Server 2003 dan yang lebih baru
SPLREG_PORT_THREAD_PRIORITY_DEFAULT
SPLREG_PORT_THREAD_PRIORITY
SPLREG_PRINT_DRIVER_ISOLATION_GROUPS Windows 7 dan yang lebih baru
SPLREG_PRINT_DRIVER_ISOLATION_TIME_BEFORE_RECYCLE Windows 7 dan yang lebih baru
SPLREG_PRINT_DRIVER_ISOLATION_MAX_OBJECTS_BEFORE_RECYCLE Windows 7 dan yang lebih baru
SPLREG_PRINT_DRIVER_ISOLATION_IDLE_TIMEOUT Windows 7 dan yang lebih baru
SPLREG_PRINT_DRIVER_ISOLATION_EXECUTION_POLICY Windows 7 dan yang lebih baru
SPLREG_PRINT_DRIVER_ISOLATION_OVERRIDE_POLICY Windows 7 dan yang lebih baru
SPLREG_RETRY_POPUP Saat pengembalian berhasil, pData berisi 1 jika server diatur untuk mencoba kembali jendela pop-up untuk semua pekerjaan, atau 0 jika server tidak mencoba kembali jendela pop-up untuk semua pekerjaan.
Tidak didukung di Windows Server 2003 dan yang lebih baru
SPLREG_SCHEDULER_THREAD_PRIORITY
SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT
SPLREG_WEBSHAREMGMT Windows Server 2003 dan yang lebih baru

Meneruskan salah satu nilai yang telah ditentukan sebelumnya berikut karena pValueName mengatur perilaku pencetakan kumpulan saat terjadi kesalahan.

Nilai Komentar
SPLREG_RESTART_JOB_ON_POOL_ERROR Nilai pData menunjukkan waktu, dalam detik, ketika pekerjaan dimulai ulang pada port lain setelah kesalahan terjadi. Pengaturan ini digunakan dengan SPLREG_RESTART_JOB_ON_POOL_ENABLED.
SPLREG_RESTART_JOB_ON_POOL_ENABLED Nilai bukan nol dalam pData menunjukkan bahwa SPLREG_RESTART_JOB_ON_POOL_ERROR diaktifkan.

Waktu yang ditentukan dalam SPLREG_RESTART_JOB_ON_POOL_ERROR adalah waktu minimum. Waktu aktual bisa lebih lama, tergantung pada pengaturan monitor port berikut, yang merupakan nilai registri di bawah kunci registri ini:

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

Panggil fungsi RegSetValueEx untuk mengatur nilai-nilai ini.

Pengaturan pemantau port Jenis Data Makna
StatusUpdateEnabled REG_DWORD Jika nilai bukan nol, memungkinkan pemantau port memperbarui penampung dengan status port.
StatusUpdateInterval REG_DWORD Menentukan interval, dalam menit, ketika monitor port memperbarui penampung dengan status port.

Untuk memastikan bahwa penampung mengalihkan pekerjaan ke printer berikutnya yang tersedia di kumpulan (ketika pekerjaan cetak tidak dicetak dalam waktu yang ditetapkan), pemantau port harus mendukung SNMP dan port jaringan di kumpulan harus dikonfigurasi sebagai "status SNMP diaktifkan." Monitor port yang mendukung SNMP adalah monitor port TCP/IP Standar.

Di Windows 7 dan versi Windows yang lebih baru, tugas cetak yang dikirim ke server cetak dirender pada klien secara default. Penyajian pekerjaan cetak sisi klien dapat dikonfigurasi dengan mengatur pKeyName ke "PrinterDriverData" dan pValueName ke nilai pengaturan dalam tabel berikut.

Pengaturan Jenis data Deskripsi
EMFDespoolingSetting REG_DWORD Nilai 0, atau jika nilai ini tidak ada di registri, memungkinkan penyajian pekerjaan cetak sisi klien default.
Nilai 1 menonaktifkan penyajian pekerjaan cetak sisi klien.
ForceClientSideRendering REG_DWORD Nilai 0, atau jika nilai ini tidak ada di registri, akan menyebabkan pekerjaan cetak dirender pada klien. Jika tugas cetak tidak dapat dirender pada klien, tugas tersebut akan dirender di server. Jika tugas cetak tidak dapat dirender pada server, maka akan gagal.
Nilai 1 akan merender pekerjaan cetak pada klien. Jika tugas cetak tidak dapat dirender pada klien, itu akan gagal.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung
Windows 2000 Server [hanya aplikasi desktop]
Header
Winspool.h (termasuk Windows.h)
Pustaka
Winspool.lib
DLL
Winspool.drv
Nama Unicode dan ANSI
SetPrinterDataExW (Unicode) dan SetPrinterDataExA (ANSI)

Lihat juga

Pencetakan

Cetak Fungsi API Spooler

GetPrinterDataEx

OpenPrinter

SetPrinter

PRINTER_INFO_7