IPrintCoreUI2::WhyConstrained method (prcomoem.h)

Metode IPrintCoreUI2::WhyConstrained menentukan mengapa pemilihan fitur/opsi yang ditentukan dibatasi.

Sintaks

HRESULT WhyConstrained(
  [in]  POEMUIOBJ poemuiobj,
  [in]  DWORD     dwFlags,
  [in]  PCSTR     pszFeatureKeyword,
  [in]  PCSTR     pszOptionKeyword,
  [out] PZZSTR    pmszReasonList,
  [in]  DWORD     cbSize,
  [out] PDWORD    pcbNeeded
);

Parameter

[in] poemuiobj

Arahkan ke konteks saat ini, struktur OEMUIOBJ .

[in] dwFlags

Dicadangkan dan harus diatur ke nol.

[in] pszFeatureKeyword

Penunjuk ke buffer yang disediakan penelepon yang berisi kata kunci fitur tunggal yang menarik bagi pemanggil.

[in] pszOptionKeyword

Penunjuk ke buffer yang disediakan penelepon yang berisi kata kunci opsi.

[out] pmszReasonList

Penunjuk ke buffer yang disediakan penelepon yang menerima daftar pasangan kata kunci fitur/opsi yang menempatkan batasan pada fitur/opsi yang ditentukan. Daftar ini dalam format MULTI_SZ dengan setiap item dalam daftar yang dipisahkan dari karakter null berikutnya. Daftar dihentikan dengan dua karakter null.

Atur parameter ini ke NULL agar hanya mengkueri ukuran (*pcbNeeded) dari daftar alasan tanpa mengisi daftar.

[in] cbSize

Menentukan ukuran, dalam byte, dari buffer yang diacu oleh pmszReasonList.

[out] pcbNeeded

Penunjuk ke lokasi memori yang menerima ukuran aktual, dalam byte, dari daftar alasan.

Nilai kembali

Metode harus mengembalikan salah satu nilai berikut.

Menampilkan kode Deskripsi
S_OK
Metode berhasil.
E_OUTOFMEMORY
Nilai dalam cbSize lebih kecil dari jumlah byte yang akan ditulis ke buffer output (buffer yang ditujukkan oleh pmszReasonList).

Metode ini dipanggil dengan pmszReasonList diatur ke NULL.

E_NOTIMPL
Metode ini tidak didukung.
E_INVALIDARG
Parameter poemuiobj menunjuk ke objek konteks yang tidak valid.

Kata kunci fitur atau kata kunci opsi tidak dikenali.

Kelekatan fitur (lihat Mengganti Driver-Supplied Halaman Lembar Properti) tidak cocok dengan yang ditentukan dalam konteks saat ini.

E_FAIL
Metode gagal

Keterangan

Metode ini hanya didukung untuk plug-in UI Windows XP Pscript5 yang sepenuhnya menggantikan halaman UI standar driver inti, dan hanya didukung selama plug-in UI IPrintOemUI::D ocumentPropertySheets dan IPrintOemUI::D evicePropertySheets fungsi, dan rutinitas panggilan balik lembar properti mereka. Lihat Mengganti halaman Lembar Properti Driver-Supplied untuk informasi selengkapnya.

Ketika pengguna UI OEM mencoba memilih item yang dibatasi, pemanggil dapat menggunakan metode ini untuk menampilkan pesan yang menjelaskan mengapa item dibatasi. Ketika metode ini kembali, pmszReasonList menunjuk ke daftar satu atau beberapa pasangan fitur/opsi yang muncul di pengaturan driver saat ini, tetapi bertentangan dengan kata kunci fitur/opsi yang dipilih. Jika tidak ada konflik, metode harus mengembalikan S_OK, pmszReasonList harus diisi dengan string ASCII kosong yang hanya berisi karakter null, dan *pcbNeeded harus diatur ke 1.

Untuk mengurangi kebutuhan untuk melakukan dua panggilan per akses data, berikan metode buffer output dengan ukuran tetap (1 KB, misalnya), lalu periksa nilai pengembalian fungsi. Jika metode mengembalikan S_OK, buffer sudah berisi data yang diminati. Jika metode mengembalikan E_OUTOFMEMORY, nilai dalam *pcbNeeded adalah ukuran buffer yang diperlukan untuk menyimpan data yang diinginkan. Penelepon kemudian harus mengalokasikan buffer dengan ukuran yang lebih besar dan melanjutkan dengan panggilan kedua ke metode .

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header prcomoem.h (termasuk Prcomoem.h)

Lihat juga

IPrintCoreUI2

IPrintCoreUI2::EnumConstrainedOptions

IPrintOemUI::D evicePropertySheets

IPrintOemUI::D ocumentPropertySheets

OEMUIOBJ