Metode IPrintTicketProvider::BindPrinter (prdrvcom.h)

Metode IPrintTicketProvider::BindPrinter mengikat printer atau mencetak antrean ke versi tertentu dari skema tiket cetak, yang memungkinkan driver inti untuk mengaitkan sekumpulan pengidentifikasi sumber daya seragam (URI) namespace privat dengan perangkat.

Sintaks

HRESULT BindPrinter(
  [in]  IN HANDLE     hPrinter,
  [in]  IN INT        version,
  [out] OUT PSHIMOPTS pOptions,
  [out] OUT DWORD     *pDevModeFlags,
  [out] OUT INT       *cNamespaces,
  [out] OUT BSTR      **ppNamespaces
);

Parameter

[in] hPrinter

Handel cetak penampung, yang disediakan oleh driver inti. Penyedia tidak boleh menutup handel ini kapan saja karena klien penyedia bertanggung jawab untuk mengelola masa pakai handel ini. Penyedia dapat menyimpan handel cetak; semua panggilan di masa mendatang relatif terhadap printer yang terkait dengan handel ini.

[in] version

Nomor versi utama dari tiket cetak atau skema tiket cetak yang diminta manajer tiket cetak untuk didukung oleh penyedia plug-in OEM. Windows Vista hanya mendukung versi 1. Penyedia harus gagal setiap upaya untuk mengikat ke versi yang tidak didukung atau dikenali.

[out] pOptions

Penunjuk ke variabel yang menerima salah satu nilai enumerasi berikut:

  • PTSHIM_DEFAULT

    Sistem menempatkan pengodean biner (BLOB - objek besar biner) dari bagian privat struktur DEVMODEW ke dalam tiket cetak dalam konversi DEVMODEW ke tiket cetak.

  • PTSHIM_NOSNAPSHOT

    Sistem tidak akan menempatkan pengodean biner (BLOB) dari bagian privat struktur DEVMODEW ke dalam tiket cetak dalam konversi DEVMODEW ke tiket cetak. Gunakan nilai ini jika semua anggota DEVMODEW publik dan privat sepenuhnya diwakili dalam tiket cetak.

[out] pDevModeFlags

Penunjuk ke variabel berjenis DWORD yang menerima serangkaian bendera bit yang menunjukkan anggota DEVMODEW publik mana yang tidak boleh diproses oleh shim tiket cetak di tiket DEVMODEW-to-print atau mencetak konversi tiket-ke-DEVMODEW. Bendera bit yang ada dalam parameter ini menunjukkan bahwa printer tidak mendukung anggota DEVMODEW terkait atau penyedia menangani karakteristik DEVMODEW tersebut. Misalnya, jika DM_MEDIATYPE diatur dalam *pDevModeFlags, printer tidak mendukung beberapa jenis media, atau penyedia bertanggung jawab untuk mendukung beberapa jenis media. (Semua bendera bit DM_XXX didefinisikan dalam wingdi.h dan dijelaskan dalam Microsoft Windows SDK.) Secara default, shim tiket cetak menangani semua anggota yang diwakili dalam anggota dmFlags dari struktur DEVMODEW default.

[out] cNamespaces

Penunjuk ke variabel yang menerima jumlah URI namespace privat yang digunakan dalam plug-in. Angka ini menunjukkan jumlah string dalam array yang ditunjukkan oleh ppNamespaces.

[out] ppNamespaces

Penunjuk ke variabel yang menerima alamat elemen pertama dari array BSTR. Plug-in mengisi setiap posisi array dengan URI namespace. Untuk informasi selengkapnya tentang parameter ini, lihat bagian Keterangan berikut.

Nilai kembali

IPrintTicketProvider::BindPrinter harus mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
S_OK Operasi berhasil.
E_VERSION_NOT_SUPPORTED Plug-in tidak mendukung versi skema cetak yang ditentukan dalam parameter versi .

Keterangan

Pengikatan ke perangkat memungkinkan penyedia untuk menyimpan objek tertentu dan menangani yang diperlukan untuk layanan tiket cetak atau kemampuan perangkat di masa mendatang pada perangkat tersebut. Misalnya, handel printer dalam parameter hPrinter dapat di-cache. Metode IPrintTicketProvider::BindPrinter dijamin hanya dipanggil sekali.

Driver bertanggung jawab untuk mengalokasikan memori untuk array yang diacu oleh parameter ppNamespaces dan untuk string URI namespace. Array harus dialokasikan dengan menggunakan fungsi CoTaskMemAlloc ; string namespace harus dialokasikan dengan menggunakan fungsi SysAllocString . Kedua fungsi dijelaskan dalam dokumentasi Windows SDK. Array yang ditunjukkan oleh parameter ppNamespaces tidak diperlukan untuk memuat namespace untuk Kata Kunci Skema Cetak atau Kerangka Kerja Skema Cetak.

Objek IPrintTicketProvider tidak harus dapat mengikat lebih dari sekali. Manajer tiket cetak selalu menggunakan instans objek IPrintTicketProvider yang berbeda untuk mengikat ke perangkat yang berbeda. Semua sumber daya yang diperoleh dalam panggilan yang berhasil ke IPrintTicketProvider::BindPrinter harus dirilis ketika jumlah referensi objek IPrintTicketProvider adalah nol. Perhatikan bahwa penyedia tidak boleh menutup handel yang diteruskan ke panggilan ke BindPrinter. Manajer tiket cetak mungkin membuat beberapa penyedia untuk perangkat yang sama, dalam versi yang berbeda, jika beberapa versi didukung.

Persyaratan

Persyaratan Nilai
Header prdrvcom.h (termasuk Prdrvcom.h)

Lihat juga

IPrintTicketProvider

IPrintTicketProvider::ConvertDevModeToPrintTicket

IPrintTicketProvider::ConvertPrintTicketToDevMode

IPrintTicketProvider::GetSupportedVersions