Fungsi AddPrinter

Fungsi AddPrinter menambahkan printer ke daftar printer yang didukung untuk server tertentu.

Sintaks

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

Parameter

pName [in]

Penunjuk ke string yang dihentikan null yang menentukan nama server tempat printer harus diinstal. Jika string ini NULL, pencetak diinstal secara lokal.

Level [in]

Versi struktur tempat pPrinter menunjuk. Nilai ini harus 2.

pPrinter [in]

Penunjuk ke struktur PRINTER_INFO_2 yang berisi informasi tentang printer. Anda harus menentukan nilai non-NULL untuk anggota pPrinterName, pPortName, pDriverName, dan pPrintProcessor dari struktur ini sebelum memanggil AddPrinter.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan adalah handel (bukan utas aman) ke objek printer baru. Setelah selesai dengan handel, teruskan ke fungsi ClosePrinter untuk menutupnya.

Jika fungsi gagal, nilai yang dikembalikan adalah NULL.

Keterangan

Jangan panggil metode ini di DllMain.

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.

Pemanggil harus memiliki SeLoadDriverPrivilege.

Handel yang dikembalikan tidak aman untuk utas. Jika penelepon perlu menggunakannya secara bersamaan pada beberapa utas, mereka harus menyediakan akses sinkronisasi kustom ke handel printer menggunakan Fungsi Sinkronisasi. Untuk menghindari penulisan kode kustom, aplikasi dapat membuka handel printer pada setiap utas, sesuai kebutuhan.

Berikut ini adalah anggota struktur PRINTER_INFO_2 yang dapat diatur sebelum fungsi AddPrinter dipanggil:

  • Atribut
  • pPrintProcessor
  • DefaultPriority
  • Prioritas
  • pComment
  • pSecurityDescriptor
  • pDatatype
  • pSepFile
  • pDevMode
  • pShareName
  • pLokasi
  • StartTime
  • pParameters
  • UntilTime

Anggota Status, cJobs, dan AveragePPM dari struktur PRINTER_INFO_2 disediakan untuk digunakan oleh fungsi GetPrinter. Mereka tidak boleh diatur sebelum memanggil AddPrinter.

Jika pSecurityDescriptorADALAH NULL, sistem menetapkan deskriptor keamanan default ke printer. Deskriptor keamanan default memiliki izin berikut.

Nilai Deskripsi
Administrator dan Pengguna Daya Kontrol penuh pada antrean cetak. Ini berarti anggota grup ini dapat mencetak, mengelola antrean (dapat menghapus antrean, mengubah pengaturan antrean apa pun, termasuk deskriptor keamanan), dan mengelola pekerjaan cetak semua pengguna (menghapus, menjeda, melanjutkan, memulai ulang pekerjaan). Perhatikan bahwa Pengguna Daya tidak ada sebelum Windows XP Professional.
Pembuat/Pemilik Dapat mengelola pekerjaan sendiri. Ini berarti bahwa pengguna yang mengirimkan pekerjaan dapat mengelola (menghapus, menjeda, melanjutkan, memulai ulang) pekerjaan mereka sendiri.
Semua orang Jalankan dan kontrol baca standar. Ini berarti bahwa anggota grup semua orang dapat mencetak dan membaca properti antrean cetak.

Setelah aplikasi membuat objek printer dengan fungsi AddPrinter , aplikasi harus menggunakan fungsi PrinterProperties untuk menentukan pengaturan yang benar untuk pengandar pencetak yang terkait dengan objek printer.

Fungsi AddPrinter mengembalikan kesalahan jika objek printer dengan nama yang sama sudah ada, kecuali objek tersebut ditandai sebagai penghapusan tertunda. Dalam hal ini, printer yang ada tidak dihapus, dan parameter pembuatan AddPrinter digunakan untuk mengubah pengaturan printer yang ada (seolah-olah aplikasi telah menggunakan fungsi SetPrinter ).

Gunakan fungsi EnumPrintProcessors untuk menghitung kumpulan prosesor cetak yang diinstal pada server. Gunakan fungsi EnumPrintProcessorDatatypes untuk menghitung kumpulan jenis data yang didukung prosesor cetak. Gunakan fungsi EnumPorts untuk menghitung kumpulan port yang tersedia. Gunakan fungsi EnumPrinterDrivers untuk menghitung driver printer yang diinstal.

Pemanggil fungsi AddPrinter harus memiliki akses SERVER_ACCESS_ADMINISTER ke server tempat printer akan dibuat. Handel yang dikembalikan oleh fungsi akan memiliki izin PRINTER_ALL_ACCESS, dan dapat digunakan untuk melakukan operasi administratif pada printer.

Jika fungsi DrvPrinterEvent diteruskan bendera PRINTER_EVENT_FLAG_NO_UI, driver tidak boleh menggunakan panggilan UI selama DrvPrinterEvent. Untuk melakukan pekerjaan terkait UI, alat penginstal harus menggunakan entri VendorSetup dalam file .inf printer atau, untuk perangkat Plug and Play, alat penginstal dapat menggunakan penginstal bersama khusus perangkat. Untuk informasi selengkapnya tentang VendorSetup, lihat Microsoft Windows Driver Development Kit (DDK).

Internet Connection Firewall (ICF) memblokir port printer secara default, tetapi pengecualian untuk Berbagi File dan Cetak diaktifkan saat Anda menjalankan AddPrinter.

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
AddPrinterW (Unicode) dan AddPrinterA (ANSI)

Lihat juga

Pencetakan

Cetak Fungsi API Spooler

ClosePrinter

DeletePrinter

EnumPorts

EnumPrinterDrivers

EnumPrintProcessors

EnumPrintProcessorDatatypes

GetPrinter

PRINTER_INFO_2

PrinterProperties

SetPrinter