Fungsi EnumPrinterData

Fungsi EnumPrinterData menghitung data konfigurasi untuk printer tertentu.

Untuk mengambil data konfigurasi dalam satu panggilan, gunakan fungsi EnumPrinterDataEx .

Sintaks

DWORD EnumPrinterData(
  _In_  HANDLE  hPrinter,
  _In_  DWORD   dwIndex,
  _Out_ LPTSTR  pValueName,
  _In_  DWORD   cbValueName,
  _Out_ LPDWORD pcbValueName,
  _Out_ LPDWORD pType,
  _Out_ LPBYTE  pData,
  _In_  DWORD   cbData,
  _Out_ LPDWORD pcbData
);

Parameter

hPrinter [in]

Handel ke printer yang data konfigurasinya akan diperoleh. Gunakan fungsi OpenPrinter atau AddPrinter untuk mengambil handel printer.

dwIndex [in]

Nilai indeks yang menentukan nilai data konfigurasi yang akan diambil.

Atur parameter ini ke nol untuk panggilan pertama ke EnumPrinterData untuk handel printer tertentu. Kemudian tingkatkan parameter satu per satu untuk panggilan berikutnya yang melibatkan printer yang sama, hingga fungsi kembali ERROR_NO_MORE_ITEMS. Lihat bagian Keterangan berikut untuk informasi lebih lanjut.

Jika Anda menggunakan teknik yang disebutkan dalam deskripsi parameter cbValueName dan cbData untuk mendapatkan nilai ukuran buffer yang memadai, mengatur kedua parameter tersebut ke nol dalam panggilan pertama ke EnumPrinterData untuk handel printer tertentu, nilai dwIndex tidak masalah untuk panggilan tersebut. Atur dwIndex ke nol dalam panggilan berikutnya ke EnumPrinterData untuk memulai proses enumerasi aktual.

Nilai data konfigurasi tidak diurutkan. Nilai baru akan memiliki indeks arbitrer. Ini berarti bahwa fungsi EnumPrinterData dapat mengembalikan nilai dalam urutan apa pun.

pValueName [out]

Penunjuk ke buffer yang menerima nama nilai data konfigurasi, termasuk karakter null yang mengakhiri.

cbValueName [in]

Ukuran, dalam byte, dari buffer yang diacu oleh pValueName.

Jika Anda ingin sistem operasi menyediakan ukuran buffer yang memadai, atur parameter ini dan parameter cbData ke nol untuk panggilan pertama ke EnumPrinterData untuk handel printer tertentu. Ketika fungsi kembali, variabel yang diarahkan oleh pcbValueName akan berisi ukuran buffer yang cukup besar untuk berhasil menghitung semua nama nilai data konfigurasi printer.

pcbValueName [out]

Penunjuk ke variabel yang menerima jumlah byte yang disimpan ke dalam buffer yang diacu oleh pValueName.

pType [out]

Penunjuk ke variabel yang menerima kode yang menunjukkan jenis data yang disimpan dalam nilai yang ditentukan. Untuk daftar kode jenis yang mungkin, lihat Jenis Nilai Registri. Parameter pType dapat berupa NULL jika kode jenis tidak diperlukan.

pData [out]

Penunjuk ke buffer yang menerima nilai data konfigurasi.

Parameter ini bisa NULL jika nilai data konfigurasi tidak diperlukan.

cbData [in]

Ukuran, dalam byte, dari buffer yang diacu oleh pData.

Jika Anda ingin sistem operasi menyediakan ukuran buffer yang memadai, atur parameter ini dan parameter cbValueName ke nol untuk panggilan pertama ke EnumPrinterData untuk handel printer tertentu. Ketika fungsi kembali, variabel yang diarahkan oleh pcbData akan berisi ukuran buffer yang cukup besar untuk berhasil menghitung semua nama nilai data konfigurasi printer.

pcbData [out]

Penunjuk ke variabel yang menerima jumlah byte yang disimpan ke dalam buffer yang diacu oleh pData.

Parameter ini dapat berupa NULL jika pData adalah NULL.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan ERROR_SUCCESS.

Jika fungsi gagal, nilai yang dikembalikan adalah kode kesalahan sistem.

Fungsi mengembalikan ERROR_NO_MORE_ITEMS ketika tidak ada lagi nilai data konfigurasi yang diambil untuk handel printer tertentu.

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.

EnumPrinterData mengambil himpunan data konfigurasi printer oleh fungsi SetPrinterData . Data konfigurasi printer terdiri dari sekumpulan nilai bernama dan yang ditik. Fungsi EnumPrinterData mendapatkan salah satu nilai ini, dan namanya serta kode jenis, setiap kali Anda memanggilnya. Panggil fungsi EnumPrinterData beberapa kali berturut-turut untuk mendapatkan semua nilai data konfigurasi printer.

Data konfigurasi printer disimpan dalam registri. Saat menghitung data konfigurasi printer, Anda harus menghindari memanggil fungsi registri yang mungkin mengubah data tersebut.

Jika Anda ingin sistem operasi menyediakan ukuran buffer yang memadai, pertama-tama panggil EnumPrinterData dengan parameter cbValueName dan cbData diatur ke nol, seperti yang disebutkan sebelumnya di bagian Parameter. Nilai dwIndex tidak masalah untuk panggilan ini. Ketika fungsi kembali, *pcbValueName dan *pcbData akan berisi ukuran buffer yang cukup besar untuk menghitung semua nama dan nilai nilai data konfigurasi printer. Pada panggilan berikutnya, alokasikan nama nilai dan buffer data, atur cbValueName dan cbData ke ukuran dalam byte buffer yang dialokasikan, dan atur dwIndex ke nol. Setelah itu, lanjutkan untuk memanggil fungsi EnumPrinterData , menambah dwIndex satu per satu setiap kali, hingga fungsi kembali ERROR_NO_MORE_ITEMS.

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
EnumPrinterDataW (Unicode) dan EnumPrinterDataA (ANSI)

Lihat juga

Pencetakan

Cetak Fungsi API Spooler

DeletePrinterData

EnumPrinterDataEx

GetPrinterData

OpenPrinter

SetPrinter

SetPrinterData