Fungsi DrvPrinterEvent (winddiui.h)

Fungsi DrvPrinterEvent antarmuka printer DLL dipanggil oleh penampung cetak saat memproses peristiwa khusus printer yang mungkin memerlukan tindakan oleh driver printer.

Sintaks

BOOL DrvPrinterEvent(
  [in] LPWSTR pPrinterName,
       int    DriverEvent,
       DWORD  Flags,
       LPARAM lParam
);

Parameter

[in] pPrinterName

Penunjuk yang disediakan penelepon ke string nama printer yang dihentikan NULL. Format string dapat berupa \Machine\PrinterName untuk menentukan printer jarak jauh, atau PrinterName untuk menentukan printer lokal.

DriverEvent

Kode peristiwa yang disediakan penelepon mengidentifikasi peristiwa. Kode peristiwa berikut didefinisikan:

Kode peristiwa Definisi
PRINTER_EVENT_ADD_CONNECTION Penampung baru saja selesai memproses panggilan ke fungsi AddPrinterConnection-nya , yang memungkinkan pengguna klien untuk terhubung ke printer jarak jauh yang dibuat sebelumnya.
PRINTER_EVENT_ATTRIBUTES_CHANGED Bit atribut untuk printer telah berubah. Menanggapi panggilan aplikasi ke fungsi SetPrinter , penampung memanggil fungsi DrvPrinterEvent driver printer, meneruskan kode peristiwa dalam panggilan. Ketika kode peristiwa ini digunakan, parameter lParam menunjuk ke struktur PRINTER_EVENT_ATTRIBUTES_INFO yang menjelaskan atribut lama dan baru.
PRINTER_EVENT_CACHE_DELETE Penampung menghapus cache file klien.
PRINTER_EVENT_CACHE_REFRESH Penampung sedang memperbarui file cache klien.
PRINTER_EVENT_CONFIGURATION_CHANGE Dicadangkan.
PRINTER_EVENT_CONFIGURATION_UPDATE Konfigurasi pencetak telah berubah. Ketika kode peristiwa ini digunakan, parameter lParam menunjuk ke string Unicode yang berisi pemberitahuan yang diformat sesuai dengan Skema Pemberitahuan Bidi.
PRINTER_EVENT_DELETE_CONNECTION Penampung baru saja selesai memproses panggilan ke fungsi DeletePrinterConnection-nya , yang memungkinkan pengguna klien untuk menghapus koneksi printer.
PRINTER_EVENT_DELETE Penampung baru saja selesai memproses panggilan ke fungsi DeletePrinter-nya , yang memungkinkan administrator untuk menghapus instans printer.
PRINTER_EVENT_INITIALIZE Penampung baru saja selesai memproses panggilan ke fungsi AddPrinter-nya , yang memungkinkan administrator untuk membuat printer tersedia di server, atau fungsi SetPrinter-nya , yang memungkinkan administrator untuk memodifikasi status printer. Dalam koneksi penyajian sisi klien, komputer klien baru saja menambahkan printer GUID. Peristiwa PRINTER_EVENT_INITIALIZE menentukan nilai parameter null lParam untuk panggilan DrvPrinterEvent pada Windows Vista dan rilis sebelumnya. Untuk rilis Windows 7 dan yang lebih baru, parameter lParam adalah handel token pengguna. Driver cetak dapat menggunakan handel token yang dikembalikan untuk mengkueri data pengguna atau meniru pengguna.

Flags

Bendera bit yang disediakan penelepon, didefinisikan sebagai berikut:

Nilai Definisi
PRINTER_EVENT_FLAG_NO_UI Jika diatur, fungsi tidak boleh menampilkan antarmuka pengguna. Selama penginstalan prosesor cetak, monitor cetak, atau driver printer, satu-satunya cara di mana antarmuka pengguna diizinkan adalah melalui penggunaan arahan VendorSetup . Lihat Entri File INF Printer dan Operasi Penyetelan Printer yang Disesuaikan untuk informasi selengkapnya.

Perhatian

Direktif VendorSetup tidak digunakan lagi dan tidak boleh digunakan oleh driver v3 atau v4 baru yang Anda kembangkan. Informasi tentang VendorSetup ini disediakan hanya untuk referensi, atau untuk pemeliharaan driver v3 yang ada yang sudah menggunakan arahan INF ini.

lParam

Tidak digunakan kecuali parameter DriverEvent diatur ke PRINTER_EVENT_ATTRIBUTES_CHANGED. Dalam hal ini, lParam berisi alamat struktur PRINTER_EVENT_ATTRIBUTES_INFO. (Lihat deskripsi sebelumnya dari parameter DriverEvent .) Untuk semua nilai lain dari parameter DriverEvent , parameter lParam adalah NULL.

Nilai kembali

Jika operasi berhasil, fungsi harus mengembalikan TRUE; jika tidak, itu harus mengembalikan FALSE. Namun, saat ini, satu-satunya waktu nilai pengembalian fungsi diperiksa adalah ketika penampung telah memanggil DrvPrinterEvent selama pemrosesan fungsi AddPrinter , dengan DriverEvent diatur ke PRINTER_EVENT_INITIALIZE. Jika DrvPrinterEvent mengembalikan FALSE dalam hal ini, penampung tidak membuat printer dan sebaliknya menyebabkan AddPrinter gagal.

Keterangan

Semua DLL antarmuka printer harus menyediakan fungsi DrvPrinterEvent , dan fungsi harus mendukung kode peristiwa PRINTER_EVENT_INITIALIZE. Dukungan untuk semua kode peristiwa lainnya bersifat opsional.

Pengaturan registri yang disimpan saat menangani peristiwa PRINTER_EVENT_INITIALIZE harus disimpan di bawah kunci HKEY_LOCAL_MACHINE dengan memanggil SetPrinterData. Untuk kode peristiwa PRINTER_EVENT_INITIALIZE dan PRINTER_EVENT_DELETE, penampung memverifikasi bahwa pemanggil memiliki hak istimewa administratif dan memanggil DrvPrinterEvent saat meniru pemanggil.

Sebaliknya, jika Anda perlu menyimpan pengaturan di registri saat menangani peristiwa PRINTER_EVENT_ADD_CONNECTION, DLL antarmuka printer harus menulisnya di bawah kunci HKEY_CURRENT_USER sehingga disimpan berdasarkan per pengguna. Kemudian jika pengguna dengan profil roaming masuk ke sistem lain, koneksi mengikuti pengguna. Fungsi DrvPrinterEvent dipanggil hanya ketika pengguna pertama kali membuat koneksi, dan bukan ketika pengguna kemudian masuk ke sistem lain menggunakan profil roaming.

Untuk kode peristiwa PRINTER_EVENT_ADD_CONNECTION dan PRINTER_EVENT_DELETE_CONNECTION, konteks eksekusi fungsi DrvPrinterEvent adalah aplikasi panggilan (biasanya Folder Cetak), dan fungsi dapat menampilkan antarmuka pengguna. Untuk semua kode peristiwa lainnya, konteks eksekusi adalah penampung cetak dan antarmuka pengguna tidak dapat ditampilkan.

Contoh driver yang mungkin menampilkan antarmuka pengguna saat koneksi dibuat adalah driver FAX, yang dapat meminta nama dan nomor telepon pengguna (pengirim FAX), dan menyimpan informasi hingga koneksi dihapus.

Contoh jenis file yang mungkin disimpan dalam cache klien adalah file metrik font besar yang berisi terlalu banyak informasi yang akan ditulis ke registri. Ketika kode peristiwa fungsi DrvPrinterEvent PRINTER_EVENT_CACHE_REFRESH, DLL antarmuka printer dapat memuat ulang file dari server untuk memastikan cache sudah diperbarui.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header winddiui.h (termasuk Winddiui.h)