Fungsi FindFirstPrinterChangeNotification

Fungsi FindFirstPrinterChangeNotification membuat objek pemberitahuan perubahan dan mengembalikan handel ke objek. Anda kemudian dapat menggunakan handel ini dalam panggilan ke salah satu fungsi tunggu untuk memantau perubahan pada pencetak atau mencetak server.

Panggilan FindFirstPrinterChangeNotification menentukan jenis perubahan yang akan dipantau. Anda dapat menentukan sekumpulan kondisi untuk memantau perubahan, sekumpulan bidang informasi printer untuk dipantau, atau keduanya.

Operasi tunggu pada handel pemberitahuan perubahan berhasil ketika salah satu perubahan yang ditentukan terjadi di printer atau server cetak yang ditentukan. Anda kemudian memanggil fungsi FindNextPrinterChangeNotification untuk mengambil informasi tentang perubahan, dan untuk mengatur ulang objek pemberitahuan perubahan untuk digunakan dalam operasi tunggu berikutnya.

Sintaks

HANDLE FindFirstPrinterChangeNotification(
  _In_     HANDLE hPrinter,
           DWORD  fdwFilter,
           DWORD  fdwOptions,
  _In_opt_ LPVOID pPrinterNotifyOptions
);

Parameter

hPrinter [in]

Handel ke pencetak atau server cetak yang ingin Anda pantau. Gunakan fungsi OpenPrinter atau AddPrinter untuk mengambil handel printer.

fdwFilter

Kondisi yang akan menyebabkan objek pemberitahuan perubahan memasuki status bersinyali. Pemberitahuan perubahan terjadi ketika satu atau beberapa kondisi yang ditentukan terpenuhi. Parameter fdwFilter dapat menjadi nol jika pPrinterNotifyOptionsbukan-NULL.

Parameter ini bisa menjadi satu atau beberapa nilai berikut.

Nilai Makna
PRINTER_CHANGE_FORM
Memberi tahu setiap perubahan pada formulir. Anda dapat mengatur bendera umum ini atau satu atau beberapa bendera tertentu berikut:
PRINTER_CHANGE_ADD_FORM
PRINTER_CHANGE_SET_FORM
PRINTER_CHANGE_DELETE_FORM
PRINTER_CHANGE_JOB
Memberi tahu setiap perubahan pada pekerjaan. Anda dapat mengatur bendera umum ini atau satu atau beberapa bendera tertentu berikut:
PRINTER_CHANGE_ADD_JOB
PRINTER_CHANGE_SET_JOB
PRINTER_CHANGE_DELETE_JOB
PRINTER_CHANGE_WRITE_JOB
PRINTER_CHANGE_PORT
Memberi tahu perubahan apa pun pada port. Anda dapat mengatur bendera umum ini atau satu atau beberapa bendera tertentu berikut:
PRINTER_CHANGE_ADD_PORT
PRINTER_CHANGE_CONFIGURE_PORT
PRINTER_CHANGE_DELETE_PORT
PRINTER_CHANGE_PRINT_PROCESSOR
Memberi tahu setiap perubahan pada prosesor cetak. Anda dapat mengatur bendera umum ini atau satu atau beberapa bendera tertentu berikut:
PRINTER_CHANGE_ADD_PRINT_PROCESSOR
PRINTER_CHANGE_DELETE_PRINT_PROCESSOR
PRINTER_CHANGE_PRINTER
Beri tahu perubahan apa pun pada printer. Anda dapat mengatur bendera umum ini atau satu atau beberapa bendera tertentu berikut:
PRINTER_CHANGE_ADD_PRINTER
PRINTER_CHANGE_SET_PRINTER
PRINTER_CHANGE_DELETE_PRINTER
PRINTER_CHANGE_FAILED_CONNECTION_PRINTER
PRINTER_CHANGE_PRINTER_DRIVER
Beri tahu perubahan apa pun pada pengandar pencetak. Anda dapat mengatur bendera umum ini atau satu atau beberapa bendera tertentu berikut:
PRINTER_CHANGE_ADD_PRINTER_DRIVER
PRINTER_CHANGE_SET_PRINTER_DRIVER
PRINTER_CHANGE_DELETE_PRINTER_DRIVER
PRINTER_CHANGE_ALL
Beri tahu jika salah satu perubahan sebelumnya terjadi.
PRINTER_CHANGE_SERVER
Windows 7: Memberi tahu setiap perubahan pada server.
Bendera ini tidak disertakan dalam perubahan yang dipantau dengan mengatur nilai PRINTER_CHANGE_ALL .

Untuk deskripsi bendera yang lebih spesifik dalam tabel sebelumnya, lihat fungsi FindNextPrinterChangeNotification .

fdwOptions

Bendera yang menentukan kategori printer tempat pemberitahuan akan berfungsi.

Nilai Makna
PRINTER_NOTIFY_CATEGORY_ALL
0x001000
FindNextPrinterChangeNotification mengembalikan pemberitahuan untuk printer 2D dan 3D.
PRINTER_NOTIFY_CATEGORY_3D
0x002000
FindNextPrinterChangeNotification mengembalikan pemberitahuan hanya untuk printer 3D.

Ketika bendera ini diatur ke nol (0), FindFirstPrinterChangeNotification hanya akan berfungsi untuk printer 2D. Ini adalah nilai default.

pPrinterNotifyOptions [in, opsional]

Penunjuk ke struktur PRINTER_NOTIFY_OPTIONS . Anggota pTypes dari struktur ini adalah array dari satu atau beberapa struktur PRINTER_NOTIFY_OPTIONS_TYPE , yang masing-masing menentukan bidang informasi printer untuk dipantau. Pemberitahuan perubahan terjadi ketika satu atau beberapa bidang yang ditentukan berubah. Ketika perubahan terjadi, fungsi FindNextPrinterChangeNotification dapat mengambil informasi printer baru. Parameter ini bisa NULL jika fdwFilter bukan nol.

Untuk daftar bidang yang dapat dipantau, lihat PRINTER_NOTIFY_OPTIONS_TYPE.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan adalah handel ke objek pemberitahuan perubahan yang terkait dengan printer atau server cetak yang ditentukan.

Jika fungsi gagal, nilai yang dikembalikan adalah INVALID_HANDLE_VALUE.

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 memantau printer atau mencetak server, panggil fungsi FindFirstPrinterChangeNotification , lalu gunakan handel objek pemberitahuan perubahan yang dikembalikan dalam panggilan ke salah satu fungsi tunggu. Operasi tunggu pada objek pemberitahuan perubahan terpenuhi saat objek pemberitahuan perubahan memasuki status tersinyap. Sistem menandakan objek ketika satu atau beberapa perubahan yang ditentukan oleh fdwFilter atau pPrinterNotifyOptions terjadi di printer yang dipantau atau server cetak.

Saat Anda memanggil FindFirstPrinterChangeNotification, fdwFilter harus nonzero atau pPrinterNotifyOptions harus non-NULL. Jika keduanya ditentukan, pemberitahuan akan terjadi untuk keduanya.

Ketika operasi tunggu pada objek pemberitahuan perubahan printer terpenuhi, panggil fungsi FindNextPrinterChangeNotification untuk menentukan penyebab pemberitahuan. Untuk kondisi yang ditentukan oleh fdwFilter, FindNextPrinterChangeNotification melaporkan kondisi atau kondisi yang berubah. Untuk bidang informasi printer yang ditentukan oleh pPrinterNotifyOptions, FindNextPrinterChangeNotification melaporkan bidang atau bidang yang berubah serta informasi baru untuk bidang ini. FindNextPrinterChangeNotification juga mengatur ulang objek pemberitahuan perubahan ke status tidak bertanda sehingga Anda dapat menggunakannya dalam operasi tunggu lain untuk terus memantau printer atau mencetak server.

Dengan satu pengecualian, jangan panggil fungsi FindNextPrinterChangeNotification jika objek pemberitahuan perubahan tidak dalam status disinyalir. Jika fungsi tunggu mengembalikan nilai WAIT_TIMEOUT, objek perubahan tidak dalam status bersinyali. Panggil fungsi FindNextPrinterChangeNotification hanya jika fungsi tunggu berhasil tanpa waktu habis. Pengecualiannya adalah ketika FindNextPrinterChangeNotification dipanggil dengan bit PRINTER_NOTIFY_OPTIONS_REFRESH diatur dalam parameter pPrinterNotifyOptions .

Saat Anda tidak lagi memerlukan objek pemberitahuan perubahan, tutup dengan memanggil fungsi FindClosePrinterChangeNotification .

Penelepon FindFirstPrinterChangeNotification harus memastikan bahwa handel printer yang diteruskan ke FindFirstPrinterChangeNotification tetap valid sampai FindClosePrinterChangeNotification dipanggil. Jika handel pencetak ditutup sebelum handel pemberitahuan perubahan pencetak, pemberitahuan lebih lanjut akan gagal dikirimkan.

FindFirstPrinterChangeNotification tidak akan mengirim pemberitahuan perubahan untuk printer 3D ke handel server.

Catatan

Di Windows XP dengan Paket Layanan 2 (SP2) dan yang lebih baru, Internet Connection Firewall (ICF) memblokir port printer secara default, tetapi pengecualian untuk Berbagi File dan Cetak dapat diaktifkan. Jika pengguna membuat koneksi printer ke komputer lain, dan pengecualian tidak diaktifkan, maka pengguna tidak akan menerima pemberitahuan perubahan printer dari server. Admin komputer harus mengaktifkan pengecualian.

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
Spoolss.dll

Lihat juga

Pencetakan

Cetak Fungsi API Spooler

FindClosePrinterChangeNotification

FindNextPrinterChangeNotification

OpenPrinter

PRINTER_NOTIFY_OPTIONS

PRINTER_NOTIFY_OPTIONS_TYPE