Struktur MONITOR (winsplp.h)

Perhatian

Struktur MONITOR usang dan hanya didukung karena alasan kompatibilitas. Monitor cetak baru harus menerapkan MONITOR2 sehingga dapat digunakan dengan kluster server cetak.

Struktur MONITOR berisi penunjuk ke fungsi yang ditentukan oleh monitor cetak.

Sintaks

typedef struct _MONITOR {
  BOOL( )(LPWSTR pName,DWORD Level,LPBYTE pPorts,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)  *pfnEnumPorts;
  BOOL( )(LPWSTR pName,PHANDLE pHandle)  *pfnOpenPort;
  BOOL()(LPWSTR pPortName,LPWSTR pPrinterName,PHANDLE pHandle,_MONITOR *pMonitor)  * pfnOpenPortEx;
  BOOL( )(HANDLE hPort,LPWSTR pPrinterName,DWORD JobId,DWORD Level,LPBYTE pDocInfo)  *pfnStartDocPort;
  BOOL( )(HANDLE hPort,LPBYTE pBuffer,DWORD cbBuf,LPDWORD pcbWritten)  *pfnWritePort;
  BOOL( )(HANDLE hPort,LPBYTE pBuffer,DWORD cbBuffer,LPDWORD pcbRead)  *pfnReadPort;
  BOOL( )(HANDLE hPort)  *pfnEndDocPort;
  BOOL( )(HANDLE hPort)  *pfnClosePort;
  BOOL( )(LPWSTR pName,HWND hWnd,LPWSTR pMonitorName)  *pfnAddPort;
  BOOL( )(LPWSTR pName,DWORD Level,LPBYTE lpBuffer,LPWSTR lpMonitorName)  *pfnAddPortEx;
  BOOL( )(LPWSTR pName,HWND hWnd,LPWSTR pPortName)  *pfnConfigurePort;
  BOOL( )(LPWSTR pName,HWND hWnd,LPWSTR pPortName)  *pfnDeletePort;
  BOOL( )(HANDLE hPort,DWORD ControlID,LPWSTR pValueName,LPWSTR lpInBuffer,DWORD cbInBuffer,LPWSTR lpOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbReturned)  *pfnGetPrinterDataFromPort;
  BOOL( )(HANDLE hPort,LPCOMMTIMEOUTS lpCTO,DWORD reserved)  *pfnSetPortTimeOuts;
  BOOL( )(LPCWSTR pszObject,ACCESS_MASK GrantedAccess,PHANDLE phXcv)  *pfnXcvOpenPort;
  DWORD( )(HANDLE hXcv,LPCWSTR pszDataName,PBYTE pInputData,DWORD cbInputData,PBYTE pOutputData,DWORD cbOutputData,PDWORD pcbOutputNeeded) *pfnXcvDataPort;
  BOOL( )(HANDLE hXcv)  *pfnXcvClosePort;
} MONITOR, *LPMONITOR;

Anggota

pfnEnumPorts

Fungsi EnumPorts server monitor port menghitung port yang didukung oleh pemantau port.

pfnOpenPort

Penunjuk ke fungsi OpenPort monitor cetak.

pfnOpenPortEx

Fungsi pemantau OpenPortEx bahasa membuka porta printer.

pfnStartDocPort

Fungsi monitor StartDocPort cetak melakukan tugas yang diperlukan untuk memulai pekerjaan cetak pada port yang ditentukan.

pfnWritePort

Penunjuk ke fungsi WritePort monitor cetak.

pfnReadPort

Penunjuk ke fungsi ReadPort monitor cetak.

pfnEndDocPort

Fungsi EndDocPort monitor cetak melakukan tugas yang diperlukan untuk mengakhiri tugas cetak pada port yang ditentukan.

pfnClosePort

Penunjuk ke fungsi ClosePort monitor cetak.

pfnAddPort

Perhatian

Fungsi AddPort sudah usang dan tidak boleh digunakan.

AddPort membuat port dan menambahkannya ke daftar port yang saat ini didukung oleh monitor yang ditentukan di lingkungan penampung.

pfnAddPortEx

(Usang. Harus NULL.) Penunjuk ke fungsi AddPortEx monitor cetak. (Port hanya memantau.)

pfnConfigurePort

Perhatian

Fungsi ConfigurePort kedaluarsa dan tidak boleh digunakan. Gunakan ConfigurePortUI sebagai gantinya.

ConfigurePort adalah fungsi manajemen port yang mengonfigurasi port yang ditentukan.

pfnDeletePort

Perhatian

Fungsi DeletePort sudah usang dan dan tidak boleh digunakan.

DeletePort menghapus port dari lingkungan monitor.

pfnGetPrinterDataFromPort

Fungsi GetPrinterDataFromPort monitor port mendapatkan informasi status dari printer dua arah dan mengembalikannya ke pemanggil.

pfnSetPortTimeOuts

Fungsi DLL SetPortTimeOuts server monitor port menetapkan nilai batas waktu port untuk port terbuka.

pfnXcvOpenPort

Penunjuk ke fungsi XcvOpenPort monitor cetak. (Port hanya memantau.)

pfnXcvDataPort

Penunjuk ke fungsi XcvDataPort monitor cetak. (Port hanya memantau.)

pfnXcvClosePort

Penunjuk ke fungsi XcvClosePort monitor cetak. (Port hanya memantau.)

Keterangan

Bagian berikut menjelaskan setiap anggota panggilan balik secara lebih rinci.

AddPort

typedef BOOL (WINAPI *pfnAddPort)(
  _In_ HANDLE hMonitor,
  _In_ LPWSTR pName,
  _In_ HWND   hWnd,
  _In_ LPWSTR pMonitorName
);

Parameter (AddPort)

Monitor [in] (AddPort)

Pemanggil menyediakan handel instans monitor. Ini adalah handel yang dikembalikan oleh fungsi InitializePrintMonitor2 monitor. (Parameter ini tidak ada jika monitor cetak mendukung InitializePrintMonitor2 alih-alih InitializePrintMonitor2.)

pName [in] (AddPort)

Penunjuk ke string yang dihentikan null yang menentukan nama server tempat port tersambung. Jika pName adalah NULL, port bersifat lokal.

hWnd [in] (AddPort)

Tangani ke jendela induk kotak dialog tempat nama port akan dimasukkan.

pMonitorName [in] (AddPort)

Penunjuk ke string yang dihentikan null yang menentukan monitor yang terkait dengan port.

Nilai yang dikembalikan (AddPort)

Nilai yang dikembalikan adalah TRUE jika fungsi berhasil, dan FALSE sebaliknya.

ConfigurePort

typedef BOOL (WINAPI *pfnConfigurePort)(
  _In_ HANDLE hMonitor,
  _In_ LPWSTR pName,
  _In_ HWND   hWnd,
  _In_ LPWSTR pPortName
);

Parameter (ConfigurePort)

hMonitor [in] (ConfigurePort)

Pemanggil menyediakan handel instans monitor. Ini adalah handel yang dikembalikan oleh fungsi InitializePrintMonitor2 monitor. (Parameter ini tidak ada jika monitor cetak mendukung InitializePrintMonitor alih-alih InitializePrintMonitor2.)

pName [in] (ConfigurePort)

Penunjuk ke string yang dihentikan null yang menentukan nama server tempat port yang diberikan ada. Jika string ini NULL, port bersifat lokal.

hWnd [in] (ConfigurePort)

Tangani ke jendela induk kotak dialog tempat informasi konfigurasi akan dimasukkan.

pPortName [in] (ConfigurePort)

Penunjuk ke string yang dihentikan null yang menentukan nama port yang akan dikonfigurasi.

Nilai yang dikembalikan (ConfigurePort)

Nilai yang dikembalikan adalah TRUE jika fungsi berhasil.

DeletePort

pfnDeletePort DeletePort;

BOOL WINAPI DeletePort(
  _In_ HANDLE hMonitor,
  _In_ LPWSTR pName,
  _In_ HWND   hWnd,
  _In_ LPWSTR pPortName
)

Parameter (DeletePort)

hMonitor [in] (DeletePort)

Pemanggil menyediakan handel instans monitor. Ini adalah handel yang dikembalikan oleh fungsi InitializePrintMonitor2 monitor. (Parameter ini tidak ada jika monitor cetak mendukung InitializePrintMonitor alih-alih InitializePrintMonitor2.)

pName [in] (DeletePort)

Penunjuk ke string yang dihentikan null yang menentukan nama server tempat port yang akan dihapus ada. Jika parameter ini NULL, port bersifat lokal.

hWnd [in] (DeletePort)

Tangani ke jendela induk kotak dialog penghapusan port.

pPortName [in] (DeletePort)

Penunjuk ke string yang dihentikan null yang menamai port yang akan dihapus.

Nilai yang dikembalikan (DeletePort)

Nilai yang dikembalikan adalah TRUE jika fungsi berhasil.

EndDocPort

typedef BOOL ( WINAPI *pfnEndDocPort)(
  _In_ HANDLE hPort
);

Parameter (EndDocPort)

hPort [in] (EndDocPort)

Handel port yang disediakan penelepon.

Nilai yang dikembalikan (EndDocPort)

Jika operasi berhasil, fungsi harus mengembalikan TRUE. Jika tidak, maka akan mengembalikan FALSE.

EnumPorts

typedef BOOL (WINAPI *pfnEnumPorts)(
  _In_     HANDLE  hMonitor,
  _In_opt_ LPWSTR  pName,
  _In_     DWORD   Level,
  _Out_    LPBYTE  pPorts,
  _In_     DWORD   cbBuf,
  _Out_    LPDWORD pcbNeeded,
  _Out_    LPDWORD pcReturned
);

Parameter (EnumPorts)

hMonitor [in] (EnumPorts)

Pemanggil menyediakan handel instans monitor. Ini adalah handel yang dikembalikan oleh fungsi InitializePrintMonitor2 monitor. (Parameter ini tidak ada jika monitor cetak mendukung InitializePrintMonitor alih-alih InitializePrintMonitor2.)

pName [in, opsional] (EnumPorts)

Penunjuk yang disediakan penelepon ke string yang berisi nama server yang port-nya akan dijumlahkan. Penunjuk NULL mewakili sistem tempat DLL server monitor port dijalankan.

Level [in] (EnumPorts)

Nilai yang disediakan penelepon menunjukkan jenis struktur yang akan dikembalikan dalam buffer yang ditujukkan oleh pPorts.

Nilai yang mungkin adalah 1 (PORT_INFO_1) atau 2 (PORT_INFO_2).

pPorts [out] (EnumPorts)

Penunjuk yang disediakan penelepon ke buffer untuk menerima informasi port. Informasi yang dikembalikan harus terdiri dari array struktur PORT_INFO_1 atau PORT_INFO_2 , diikuti oleh string yang ditujukkan oleh anggota struktur.

cbBuf [in] (EnumPorts)

Ukuran yang disediakan penelepon, dalam byte, dari buffer yang diacu oleh pPorts.

pcbNeeded [out] (EnumPorts)

Penunjuk yang disediakan penelepon ke lokasi untuk menerima ukuran buffer, dalam byte, diperlukan untuk berisi semua informasi yang dikembalikan.

pcReturned [out] (EnumPorts)

Penunjuk yang disediakan penelepon ke lokasi untuk menerima port yang dijumlahkan nomor.

Nilai yang dikembalikan (EnumPorts)

Jika operasi berhasil, fungsi harus mengembalikan TRUE. Jika tidak, maka akan mengembalikan FALSE.

GetPrinterDataFromPort

pfnGetPrinterDataFromPort GetPrinterDataFromPort;

BOOL WINAPI GetPrinterDataFromPort(
  _In_  HANDLE  hPort,
  _In_  DWORD   ControlID,
  _In_  LPWSTR  pValueName,
  _In_  LPWSTR  lpInBuffer,
  _In_  DWORD   cbInBuffer,
  _Out_ LPWSTR  lpOutBuffer,
  _In_  DWORD   cbOutBuffer,
  _Out_ LPDWORD lpcbReturned
)

Parameter (GetPrinterDataFromPort)

hPort [in] (GetPrinterDataFromPort)

Handel port yang disediakan penelepon.

ControlID [in] (GetPrinterDataFromPort)

Kode kontrol I/O perangkat yang disediakan penelepon. Nilai nol menunjukkan nama nilai disediakan oleh pValueName.

pValueName [in] (GetPrinterDataFromPort)

Penunjuk yang disediakan penelepon ke string yang mengidentifikasi informasi yang diminta. Hanya valid jika ControlID adalah nol.

lpInBuffer [in] (GetPrinterDataFromPort)

Penunjuk yang disediakan penelepon ke buffer yang berisi data input. Digunakan hanya jika ControlID bukan nol.

cbInBuffer [in] (GetPrinterDataFromPort)

Ukuran yang disediakan penelepon, dalam byte, dari buffer yang diacu oleh lpInBuffer.

lpOutBuffer [out] (GetPrinterDataFromPort)

Penunjuk yang disediakan penelepon ke buffer untuk menerima data yang diminta.

cbOutBuffer [in] (GetPrinterDataFromPort)

Ukuran yang disediakan penelepon, dalam byte, dari buffer yang diacu oleh lpOutBuffer.

lpcbReturned [out] (GetPrinterDataFromPort)

Penunjuk yang disediakan penelepon ke lokasi untuk menerima jumlah byte yang ditulis ke dalam buffer yang ditujukkan oleh lpOutBuffer.

Nilai yang dikembalikan (GetPrinterDataFromPort)

Jika operasi berhasil, fungsi harus mengembalikan TRUE. Jika tidak, maka akan mengembalikan FALSE.

OpenPortEx

pfnOpenPortEx OpenPortEx;

BOOL WINAPI OpenPortEx(
  _In_  HANDLE           hMonitor,
  _In_  HANDLE           hMonitorPort,
  _In_  LPWSTR           pPortName,
  _In_  LPWSTR           pPrinterName,
  _Out_ PHANDLE          pHandle,
  _In_  struct _MONITOR2 *pMonitor
)

Parameter (OpenPortEx)

hMonitor [in] (OpenPortEx)

Handel instans monitor bahasa pemanggil yang disediakan. Ini adalah handel yang dikembalikan oleh fungsi InitializePrintMonitor2 monitor. (Parameter ini tidak ada jika monitor cetak mendukung InitializePrintMonitor alih-alih InitializePrintMonitor2.) Dalam lingkungan kluster, mungkin ada beberapa instans pemantau bahasa.

hMonitorPort [in] (OpenPortEx)

Handel instans monitor port yang disediakan pemanggil. Ini adalah handel yang dikembalikan oleh fungsi InitializePrintMonitor2 monitor. (Parameter ini tidak ada jika monitor cetak mendukung InitializePrintMonitor alih-alih InitializePrintMonitor2.) Monitor bahasa harus menggunakan handel ini ketika memanggil fungsi dalam struktur MONITOR2 monitor port.

pPortName [in] (OpenPortEx)

Penunjuk yang disediakan penelepon ke string yang berisi nama port yang akan dibuka.

pPrinterName [in] (OpenPortEx)

Penunjuk yang disediakan penelepon ke string yang berisi nama printer yang tersambung ke port.

pHandle [out] (OpenPortEx)

Penunjuk yang disediakan penelepon ke lokasi untuk menerima handel port.

pMonitor [in] (OpenPortEx)

Penunjuk yang disediakan penelepon ke struktur MONITOR2 yang dikembalikan oleh fungsi InitializePrintMonitor2 monitor port.

Nilai yang dikembalikan (OpenPortEx)

Jika operasi berhasil, fungsi harus mengembalikan TRUE. Jika tidak, maka akan mengembalikan FALSE.

SetPortTimeOuts

BOOL (WINAPI *pfnSetPortTimeOuts)
    (
    _In_ HANDLE  hPort,
    _In_ LPCOMMTIMEOUTS lpCTO,
    _In_ DWORD   reserved    // must be set to 0
    );

Parameter (SetPortTimeOuts)

hPort [in] (SetPortTimeOuts)

Handel yang disediakan penelepon ke port terbuka untuk mengatur nilai waktu habis.

lpCTO [in] (SetPortTimeOuts)

Penunjuk yang disediakan penelepon ke struktur COMMTIMEOUTS .

reserved [in] (SetPortTimeOuts)

Disiapkan untuk penggunaan masa mendatang. Harus diatur ke nol.

Nilai yang dikembalikan (SetPortTimeOuts)

Jika operasi berhasil, fungsi harus mengembalikan TRUE. Jika tidak, maka akan mengembalikan FALSE.

StartDocPort

typedef BOOL (WINAPI *pfnStartDocPort)(
  _In_ HANDLE hPort,
  _In_ LPWSTR pPrinterName,
  _In_ DWORD  JobId,
  _In_ DWORD  Level,
  _In_ LPBYTE pDocInfo
);

Parameter (StartDocPort)

hPort [in] (StartDocPort)

Handel port yang disediakan penelepon.

pPrinterName [in] (StartDocPort)

Penunjuk yang disediakan penelepon ke string yang berisi nama printer.

JobId [in] (StartDocPort)

Pengidentifikasi pekerjaan yang disediakan penelepon dan penampung.

Level [in] (StartDocPort)

Nilai yang disediakan penelepon menunjukkan jenis struktur yang ditunjukkan oleh pDocInfo.

Nilai yang mungkin adalah 1 (DOC_INFO_1) atau 2 (DOC_INFO_2).

pDocInfo [in] (StartDocPort)

Penunjuk yang disediakan penelepon ke struktur DOC_INFO_1 atau DOC_INFO_2 .

Nilai yang dikembalikan (StartDocPort)

Jika operasi berhasil, fungsi harus mengembalikan TRUE. Jika tidak, maka akan mengembalikan FALSE.

Catatan

Penampung memanggil AddPort ketika menerima permintaan aplikasi untuk menambahkan port ke lingkungannya. Penampung meneruskan panggilan ke monitor port bernama pada server bernama.

AddPort memungkinkan port ditambahkan secara interaktif. Monitor harus meminta pengguna untuk memasukkan nama port dalam kotak dialog pada jendela yang terkait dengan hWnd. AddPort harus memvalidasi nama port yang dimasukkan dengan memanggil fungsi Win32 EnumPorts untuk memastikan bahwa tidak ada nama port duplikat yang ditambahkan ke lingkungan penampung. Monitor juga harus memverifikasi bahwa port adalah salah satu yang didukungnya.

Penampung tidak mendukung panggilan AddPort jarak jauh. Akibatnya, implementasi AddPort dapat mengabaikan parameter pName dan pMonitorName .

Penampung memanggil ConfigurePort sehingga monitor port dapat melakukan konfigurasi port. ConfigurePort dapat menawarkan kotak dialog untuk mendapatkan beberapa atau semua informasi konfigurasi port yang diperlukan dari pengguna.

Penampung tidak mendukung panggilan ConfigurePort jarak jauh; akibatnya, pemantauan dapat mengabaikan parameter pName .

Penampung memanggil DeletePort sehingga pemantau port dapat menghapus port dari lingkungan monitor. Monitor harus menghapus port yang ditentukan dari statusnya. Penampung tidak akan memanggil DeletePort pada monitor selama port terbuka.

Aplikasi dapat menghapus port lokal dan jarak jauh. UI printer menampilkan kotak pesan konfirmasi sebelum penampung memanggil DeletePort, sehingga monitor harus mengabaikan parameter hWnd dan tidak menampilkan kotak dialog lain.

Monitor bahasa dan DLL server monitor port diperlukan untuk menentukan fungsi EndDocPort dan menyertakan alamat fungsi dalam struktur MONITOR2 .

Handel yang diterima sebagai argumen hPort fungsi adalah handel port yang disediakan fungsi OpenPort atau OpenPortEx monitor.

Fungsi EndDocPort monitor bahasa biasanya memanggil fungsi EndDocPort monitor port terkait. Ini juga harus memberi tahu penampung ketika perangkat pencetakan telah menyelesaikan pekerjaan dengan memanggil SetJob, menentukan perintah JOB_CONTROL_LAST_PAGE_EJECTED. Pemantau bahasa untuk printer dua arah tidak boleh memanggil SetJob sampai printer telah mengirim pemberitahuan bahwa pekerjaan benar-benar selesai.

Fungsi EndDocPort server monitor port DLL biasanya memanggil fungsi CloseHandle , untuk menutup handel yang sebelumnya diperoleh dengan memanggil CreateFile dari dalam StartDocPort. Ini juga harus memberi tahu penampung ketika perangkat pencetakan telah menyelesaikan pekerjaan, dengan memanggil SetJob, menentukan perintah JOB_CONTROL_SENT_TO_PRINTER. (Jika penampung berkomunikasi dengan port melalui pemantau bahasa, itu tidak menganggap pekerjaan selesai sampai pemantau bahasa mengirim JOB_CONTROL_LAST_PAGE_EJECTED.)

Fungsi EndDocPort harus membebaskan semua sumber daya yang dialokasikan oleh fungsi StartDocPort .

Anda mungkin ingin mengubah perilaku fungsi EndDocPort jika pengguna telah menghapus atau memulai ulang pekerjaan cetak. Fungsi ini dapat memanggil GetJob, dan memeriksa status JOB_STATUS_DELETING atau JOB_STATUS_RESTART, untuk melihat apakah salah satu peristiwa ini telah terjadi.

DLL server monitor port diperlukan untuk menentukan fungsi EnumPorts dan menyertakan alamat fungsi dalam struktur MONITOR2 . Pemantau bahasa tidak mengekspor fungsi ini.

Tujuan fungsi EnumPorts adalah untuk menghitung port yang saat ini didukung oleh monitor cetak. Port ini adalah port yang sebelumnya ditentukan ke fungsi AddPortUI atau AddPortEx monitor.

Fungsi EnumPorts harus mengisi buffer yang diacu oleh pPort dengan array struktur PORT_INFO_1 atau PORT_INFO_2. Kemudian dimulai di lokasi memori setelah elemen array terakhir, fungsi harus memuat semua string yang ditujukkan oleh anggota struktur array. Lihat localmon.dll, monitor port sampel, misalnya cara melakukan ini. Fungsi ini juga harus mengembalikan jumlah struktur yang disediakan (yaitu, jumlah port yang didukung) dengan menempatkan angka di lokasi yang diacu oleh pcReturned.

Pemanggil menentukan ukuran buffer yang disediakan dalam cbBuf. Jika buffer terlalu kecil, fungsi harus menempatkan ukuran buffer yang diperlukan di lokasi yang diacu oleh pcbNeeded, panggil SetLastError yang menentukan ERROR_INSUFFICIENT_BUFFER, dan mengembalikan FALSE.

Jika Level berisi nomor tingkat yang tidak valid, fungsi harus memanggil SetLastError yang menentukan ERROR_INVALID_LEVEL, dan mengembalikan FALSE. Beberapa monitor port hanya mendukung nilai tingkat 1.

Monitor port harus mendukung pelokalan string yang ditunjukkan oleh anggota pMonitorName dan pDescription dari struktur PORT_INFO_2. String ini harus ditentukan dalam file sumber daya dan diperoleh dengan memanggil LoadString.

Anggota fPortType dari struktur PORT_INFO_2 tidak digunakan dengan sistem operasi berbasis NT.

Monitor bahasa dan DLL server monitor port dapat secara opsional menentukan fungsi GetPrinterDataFromPort dan menyertakan alamat fungsi dalam struktur MONITOR2 .

Fungsi ini dimaksudkan untuk digunakan dengan printer dua arah, dan dapat digunakan dengan dua cara berikut:

  • Sebagai sarana untuk meminta pemantau bahasa untuk melakukan polling port printer, untuk mendapatkan nilai informasi spesifik printer saat ini yang disimpan dalam registri.

  • Sebagai sarana untuk meminta monitor port untuk mengirim kode kontrol I/O ke driver port.

Jika fungsi GetPrinterDataFromPort monitor bahasa menerima penunjuk string di pValueName, fungsi tersebut harus mengembalikan nilai dalam buffer output yang disediakan. Biasanya, string mewakili nama nilai registri, dan penampung memanggil GetPrinterDataFromPort saat aplikasi memanggil fungsi GetPrinterData .

Tanggung jawab pemantau bahasa adalah mengirim perintah ke perangkat keras printer dengan memanggil fungsi WritePort monitor port, dan membaca respons dengan memanggil ReadPort, untuk mendapatkan nilai yang diperlukan. Misalnya, pjlmon.dll, monitor bahasa sampel, dapat mengembalikan nilai untuk nama nilai registri "Memori Terinstal" dan "Memori yang Tersedia" port.

Setelah penampung memanggil GetPrinterDataFromPort untuk mendapatkan nilai registri, penampung memperbarui registri dengan nilai baru.

Biasanya, pemantau port tidak mendukung panggilan ke GetPrinterDataFromPort yang menyertakan penunjuk string di pValueName.

Jika fungsi GetPrinterDataFromPort monitor bahasa menerima kode kontrol I/O nonzero di ControlID, itu hanya harus memanggil fungsi GetPrinterDataFromPort monitor port terkait dan mengembalikan hasilnya. Referensi Driver Mode Kernel mencantumkan kode kontrol I/O untuk port paralel dan serial.

Ketika fungsi GetPrinterDataFromPort monitor port menerima kode kontrol I/O nonzero di ControlID, ia harus memanggil DeviceIOControl untuk meneruskan kode kontrol ke driver port mode kernel. Nilai parameter lpInBuffer, cbInBuffer, lpOutBuffer, cbOutBuffer, dan lpcbReturned juga harus diteruskan ke DeviceIOControl.

Monitor bahasa diperlukan untuk menentukan OpenPortEx fungsi dan menyertakan alamatnya dalam struktur MONITOR2 . Fungsi OpenPortEx ini dipanggil oleh penampung cetak ketika antrean cetak sedang tersambung ke port.

Tujuan OpenPortEx utama fungsi adalah untuk mengembalikan handel port yang dapat digunakan pemanggil sebagai argumen input untuk panggilan berikutnya ke fungsi StartDocPort, WritePort, ReadPort, EndDocPort, dan GetPrinterDataFromPort monitor bahasa. Karena monitor bahasa biasanya mengimplementasikan fungsi-fungsi ini dengan memanggil fungsi yang setara di monitor port terkait, monitor bahasa biasanya mendapatkan handel port dengan memanggil fungsi OpenPort monitor port. Untuk informasi selengkapnya lihat Interaksi Bahasa dan Port Monitor.

Parameter OpenPortExpMonitor fungsi adalah penunjuk ke struktur MONITOR2 monitor port. Struktur ini berisi pointer ke fungsi port monitor yang dapat dipanggil. Fungsi OpenPortEx harus memeriksa struktur untuk memverifikasi bahwa semua penunjuk fungsi yang diperlukan bukan NULL. Jika struktur valid, fungsi harus menyalinnya ke penyimpanan lokal. Jika tidak OpenPortEx , harus memanggil SetLastError, menentukan ERROR_INVALID_PRINT_MONITOR, dan mengembalikan FALSE.

Cetak fungsi monitor yang menerima handel port sebagai input tidak juga menerima handel monitor. Oleh karena itu, OpenPortEx fungsi harus menyimpan handel monitor yang diterima di lokasi yang dapat dirujuk oleh handel port. Ini memungkinkan fungsi yang menerima handel port untuk mereferensikan handel monitor.

Fungsi DLL SetPortTimeOuts server pemantau port memungkinkan pemantau bahasa menentukan nilai batas waktu port untuk port terbuka. Fungsi ini bersifat opsional, dan harus disediakan hanya jika monitor port mengontrol port yang memungkinkan modifikasi nilai batas waktu port. Jika fungsi ditentukan, alamatnya harus disertakan dalam struktur MONITOR2 .

Fungsi ini dipanggil oleh pjlmon.dll, monitor bahasa sampel, dan Anda dapat menulis monitor bahasa yang disesuaikan yang memanggilnya. Penampung cetak tidak memanggil SetPortTimeOuts.

Monitor port harus menginisialisasi nilai waktu habis port dari dalam fungsi OpenPort-nya .

Monitor bahasa dan DLL server monitor port diperlukan untuk menentukan StartDocPort fungsi dan menyertakan alamat fungsi dalam struktur MONITOR2 .

Handel yang diterima sebagai argumen hPort fungsi adalah handel port yang disediakan fungsi OpenPort atau OpenPortEx monitor.

Fungsi monitor StartDocPort bahasa biasanya memanggil fungsi monitor StartDocPort port terkait.

Fungsi DLL StartDocPort server monitor port biasanya memanggil fungsi CreateFile , untuk membuat koneksi ke driver port mode kernel.

Jika perlu, pemantau port harus mencegah proses lain menggunakan port yang ditentukan hingga EndDocPort dipanggil. Misalnya, pemantau port untuk port COM harus memastikan bahwa, saat penampung mengirim data printer ke port, aplikasi lain tidak mengasumsikan port terhubung ke perangkat komunikasi tertentu dan kemudian mencoba berkomunikasi dengan perangkat tersebut. Catatan peringatan ini tidak berlaku untuk penyedia cetak lokal, yang menjamin bahwa ia tidak pernah memanggil StartDocPort dua kali berturut-turut tanpa panggilan intervensi ke EndDocPort, tetapi berlaku untuk penyedia cetak yang tidak membuat jaminan ini.

Persyaratan

Persyaratan Nilai
Header winsplp.h (termasuk Winsplp.h)

Lihat juga

MONITOR2

MONITORUI