Fungsi DrvDocumentEvent (winddiui.h)
Fungsi DrvDocumentEvent antarmuka printer DLL dapat menangani peristiwa tertentu yang terkait dengan pencetakan dokumen.
Sintaks
int DrvDocumentEvent(
HANDLE hPrinter,
HDC hdc,
int iEsc,
ULONG cbIn,
[in] PVOID pvIn,
ULONG cbOut,
[out] PVOID pvOut
);
Parameter
hPrinter
Handel printer yang disediakan penelepon.
hdc
Handel konteks perangkat yang disediakan penelepon, yang dihasilkan oleh CreateDC Ini nol jika iEsc diatur ke DOCUMENTEVENT_CREATEDCPRE. Untuk pembatasan pencetakan dari aplikasi 32-bit pada Windows versi 64-bit, lihat bagian Keterangan di bawah ini.
iEsc
Kode escape yang disediakan penelepon yang mengidentifikasi peristiwa yang akan ditangani.
Untuk pembatasan pencetakan dari aplikasi 32-bit pada Windows versi 64-bit, lihat bagian Keterangan di bawah ini.
Parameter ini bisa menjadi salah satu konstanta bilangan bulat berikut:
Konstanta iEsc | Kejadian |
---|---|
DOCUMENTEVENT_ABORTDOC | GDI akan memproses panggilan ke fungsi AbortDoc-nya . |
DOCUMENTEVENT_CREATEDCPOST | GDI baru saja memproses panggilan ke fungsi CreateDC atau CreateIC-nya . Kode escape ini tidak boleh digunakan kecuali telah ada panggilan sebelumnya ke DrvDocumentEvent dengan iEsc diatur ke DOCUMENTEVENT_CREATEDCPRE. |
DOCUMENTEVENT_CREATEDCPRE | GDI akan memproses panggilan ke fungsi CreateDC atau CreateIC-nya . |
DOCUMENTEVENT_DELETEDC | GDI akan memproses panggilan ke fungsi DeleteDC-nya . |
DOCUMENTEVENT_ENDDOCPOST | GDI baru saja memproses panggilan ke fungsi EndDoc-nya . |
DOCUMENTEVENT_ENDDOCPRE atau DOCUMENTEVENT_ENDDOC | GDI akan memproses panggilan ke fungsi EndDoc-nya . |
DOCUMENTEVENT_ENDPAGE | GDI akan memproses panggilan ke fungsi EndPage-nya . |
DOCUMENTEVENT_ESCAPE | GDI akan memproses panggilan ke fungsi ExtEscape-nya . |
DOCUMENTEVENT_QUERYFILTER | Peristiwa DOCUMENTEVENT_QUERYFILTER mewakili kesempatan bagi penampung untuk mengkueri driver untuk daftar peristiwa DOCUMENTEVENT_XXX yang akan direspons driver. Kejadian ini dikeluarkan tepat sebelum panggilan ke DrvDocumentEvent yang melewati peristiwa DOCUMENTEVENT_CREATEDCPRE. |
DOCUMENTEVENT_RESETDCPOST | GDI baru saja memproses panggilan ke fungsi ResetDC-nya . Kode escape ini tidak boleh digunakan kecuali telah ada panggilan sebelumnya ke DrvDocumentEvent dengan iEsc diatur ke DOCUMENTEVENT_RESETDCPRE. |
DOCUMENTEVENT_RESETDCPRE | GDI akan memproses panggilan ke fungsi ResetDC-nya . |
DOCUMENTEVENT_STARTDOCPOST | GDI baru saja memproses panggilan ke fungsi StartDoc-nya . |
DOCUMENTEVENT_STARTDOCPRE atau DOCUMENTEVENT_STARTDOC | GDI akan memproses panggilan ke fungsi StartDoc-nya . |
DOCUMENTEVENT_STARTPAGE | GDI akan memproses panggilan ke fungsi StartPage-nya . |
cbIn
Ukuran yang disediakan penelepon, dalam byte, dari buffer yang diacu oleh pvIn.
[in] pvIn
Penunjuk yang disediakan penelepon, yang penggunaannya tergantung pada nilai yang disediakan untuk iEsc, sebagai berikut:
Konstanta iEsc | Isi pvIn |
---|---|
DOCUMENTEVENT_ABORTDOC | Tidak digunakan. |
DOCUMENTEVENT_CREATEDCPOST | pvIn berisi alamat penunjuk ke struktur DEVMODEW yang ditentukan dalam parameter pvOut dalam panggilan sebelumnya ke fungsi ini, di mana parameter iEsc diatur ke DOCUMENTEVENT_CREATEDCPRE. |
DOCUMENTEVENT_CREATEDCPRE | pvIn menunjuk ke struktur DOCEVENT_CREATEDCPRE . |
DOCUMENTEVENT_DELETEDC | Tidak digunakan. |
DOCUMENTEVENT_ENDDOCPOST | Tidak digunakan. |
DOCUMENTEVENT_ENDDOCPRE atau DOCUMENTEVENT_ENDDOC | Tidak digunakan. |
DOCUMENTEVENT_ENDPAGE | Tidak digunakan. |
DOCUMENTEVENT_ESCAPE | pvIn menunjuk ke struktur DOCEVENT_ESCAPE . |
DOCUMENTEVENT_QUERYFILTER | Sama seperti DOCUMENTEVENT_CREATEDCPRE. |
DOCUMENTEVENT_RESETDCPOST | pvIn berisi alamat pointer ke struktur DEVMODEW yang ditentukan dalam parameter pvOut dalam panggilan sebelumnya ke fungsi ini, di mana parameter iEsc diatur ke DOCUMENTEVENT_RESETDCPRE. |
DOCUMENTEVENT_RESETDCPRE | pvIn berisi alamat pointer ke struktur DEVMODEW yang disediakan oleh pemanggil fungsi ResetDC . |
DOCUMENTEVENT_STARTDOCPOST | pvIn menunjuk ke LONG yang menentukan pengidentifikasi pekerjaan cetak yang dikembalikan oleh fungsi StartDoc . |
DOCUMENTEVENT_STARTDOCPRE atau DOCUMENTEVENT_STARTDOC | pvIn berisi alamat pointer ke struktur DOCINFO yang disediakan oleh pemanggil fungsi StartDoc . |
DOCUMENTEVENT_STARTPAGE | Tidak digunakan. |
cbOut
Jika iEsc DOCUMENTEVENT_ESCAPE
Nilai yang disediakan fungsi yang digunakan sebagai parameter cbOutput untuk fungsi ExtEscape .
Jika iEsc DOCUMENTEVENT_QUERYFILTER
Ukuran yang disediakan penelepon, dalam byte, dari penunjuk buffer ke oleh pvOut.
Untuk semua nilai iEsc lainnya
Tidak digunakan.
[out] pvOut
Pointer yang disediakan fungsi ke buffer output, yang penggunaannya tergantung pada nilai yang disediakan untuk iEsc, sebagai berikut:
Konstanta iEsc | Konten pvOut |
---|---|
DOCUMENTEVENT_CREATEDCPRE | Penunjuk ke struktur DEVMODEW yang disediakan driver, yang digunakan GDI alih-alih yang disediakan oleh pemanggil CreateDC . (Jika NULL, GDI menggunakan struktur yang disediakan pemanggil.) |
DOCUMENTEVENT_ESCAPE | Penunjuk buffer yang digunakan sebagai parameter lpszOutData untuk fungsi ExtEscape . |
DOCUMENTEVENT_QUERYFILTER | Penunjuk yang disediakan penelepon ke buffer yang berisi struktur DOCEVENT_FILTER . |
DOCUMENTEVENT_RESETDCPRE | Penunjuk ke struktur DEVMODEW yang disediakan driver, yang digunakan GDI alih-alih yang disediakan oleh pemanggil fungsi ResetDC . (Jika NULL, GDI menggunakan struktur yang disediakan pemanggil.) |
Semua nilai iEsc lainnya | Tidak digunakan. |
Mengembalikan nilai
Nilai pengembalian fungsi tergantung pada escape yang disediakan untuk iEsc. Untuk beberapa kode escape, nilai yang dikembalikan tidak digunakan (lihat daftar nilai kedua). Jika fungsi memasok nilai pengembalian, itu harus salah satu dari yang berikut:
Menampilkan kode | Deskripsi |
---|---|
DOCUMENTEVENT_FAILURE | Driver mendukung kode escape yang diidentifikasi oleh iEsc, tetapi terjadi kegagalan. |
DOCUMENTEVENT_SUCCESS | Driver berhasil menangani kode escape yang diidentifikasi oleh iEsc. |
DOCUMENTEVENT_UNSUPPORTED | Driver tidak mendukung kode escape yang diidentifikasi oleh iEsc. |
Keterangan
DLL antarmuka printer dapat secara opsional menyediakan fungsi DrvDocumentEvent untuk melakukan pra-pemrosesan atau pasca-pemrosesan panggilan GDI yang terkait dengan penyajian dokumen. Panggilan ke fungsi DrvDocumentEvent dilakukan dari klien GDI mode pengguna, ketika aplikasi melakukan panggilan ke klien GDI.
Untuk nilai iEsc DOCUMENTEVENT_QUERYFILTER, penampung dapat menginterpretasikan nilai DOCUMENTEVENT_SUCCESS yang dikembalikan oleh DrvDocumentEvent dengan dua cara, tergantung pada apakah driver memodifikasi anggota tertentu dari struktur DOCEVENT_FILTER . (Parameter pvOut menunjuk ke struktur ini.) Ketika spooler mengalokasikan memori untuk struktur jenis ini, penampung menginisialisasi dua anggota struktur ini, cElementsReturned dan cElementsNeeded, ke nilai yang diketahui. Setelah DrvDocumentEvent kembali, penampung menentukan apakah nilai anggota ini telah berubah, dan menggunakan informasi tersebut untuk menginterpretasikan nilai pengembalian DrvDocumentEvent . Tabel berikut ini meringkas situasi ini.
Jika nama kode escape tidak memiliki akhiran atau diakhiri dengan PRE, klien GDI memanggil DrvDocumentEvent tepat sebelum memanggil mesin rendering GDI mode kernel. Jika nama kode escape diakhiri dengan POST, klien GDI memanggil DrvDocumentEvent tepat setelah mesin penyajian GDI mode kernel kembali.
Jika kode escape yang disediakan dalam parameter iEsc DOCUMENTEVENT_CREATEDCPRE, aturan berikut berlaku:
Jika pekerjaan dikirim langsung ke printer tanpa menampung, pvIn --> pszDevice menunjuk ke nama printer. (Lihat struktur DOCEVENT_CREATEDCPRE untuk informasi selengkapnya.)
Jika pekerjaan sedang ditampung, pvIn --> pszDevice menunjuk ke nama port printer.
Fungsi DrvDocumentEvent dijalankan dalam konteks pemanggil mode pengguna fungsi klien GDI. Saat penampungan EMF dinonaktifkan, fungsi dapat menampilkan antarmuka pengguna. Misalnya, fungsi DrvDocumentEvent untuk driver FAX mungkin menampilkan kotak dialog kepada pengguna sebelum fungsi StartDoc GDI diproses.
Pembatasan berikut berlaku saat menjalankan aplikasi 32-bit pada Windows versi 64-bit:
Satu-satunya fungsi GDI yang harus dipanggil DrvDocumentEvent adalah ExtEscape, dan hanya escape privat yang harus digunakan.
Panggilan DrvDocumentEvent ke fungsi GDI lainnya dapat menghasilkan perilaku yang tidak terdefinisi.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | winddiui.h (termasuk Winddiui.h) |