Fungsi ReadPort (winsplp.h)

Fungsi pemantau ReadPort port membaca data dari port printer.

Sintaks

BOOL ReadPort(
  _In_  HANDLE  hPort,
  _Out_ LPBYTE  pBuffer,
        DWORD   cbBuffer,
  _Out_ LPDWORD pcbRead
);

Parameter

[in] hPort

Handel port yang disediakan penelepon.

[out] pBuffer

Penunjuk yang disediakan penelepon ke buffer untuk menerima data yang dibaca dari port.

cbBuffer

Ukuran yang disediakan penelepon, dalam byte, pBuffer.

[out] pcbRead

Penunjuk yang disediakan penelepon ke lokasi untuk menerima jumlah byte yang berhasil dibaca dari port.

Nilai kembali

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

Keterangan

Monitor bahasa dan DLL server monitor port diperlukan untuk menentukan ReadPort 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.

Biasanya, fungsi pemantau ReadPort bahasa memanggil fungsi monitor ReadPort port terkait, dan mengembalikan konten buffer yang diperoleh ke pemanggil.

Selain itu, pemantau bahasa mungkin membuat utas terpisah yang memanggil fungsi monitor ReadPort port untuk memeriksa informasi status yang tidak diminta. Jika operasi baca seperti itu berhasil, informasi status harus dikembalikan ke penampung dengan memanggil SetPort (dijelaskan dalam dokumentasi Microsoft Windows SDK).

Biasanya, fungsi DLL ReadPort server monitor port memanggil ReadFile (dijelaskan dalam dokumentasi Windows SDK) untuk mendapatkan data dari driver port mode kernel. Fungsi ini hanya mengembalikan data ke pemanggil.

Meskipun monitor bahasa dan pemantau port harus menentukan ReadPort fungsi dan menempatkan alamatnya dalam struktur MONITOR2, fungsi monitor ReadPort bahasa tidak pernah benar-benar dipanggil oleh penampung atau aplikasi. Fungsi ini hanya untuk penggunaan internal monitor bahasa itu sendiri.

Misalnya pjlmon.dll, monitor bahasa sampel, membuat utas terpisah yang memanggilnya sendiri ReadPort untuk watch untuk informasi status printer yang tidak diminta, dan ReadPort fungsi memanggil fungsi monitor ReadPort port. Ketika pemantau port mengembalikan data ke pemantau bahasa, pemantau bahasa mengurai data yang diterima dan memanggil SetPort (dijelaskan dalam dokumentasi Windows SDK) untuk mengirim informasi status ke penampung.

Fungsi harus mengembalikan jumlah byte yang berhasil dibaca dengan menempatkan angka di lokasi yang ditujukan oleh pcbRead. Pemanggil menentukan keberhasilan atau kegagalan operasi tulis dengan memeriksa ReadPort's nilai pengembalian, bukan jumlah byte yang dikembalikan. Jadi jumlah byte yang dikembalikan dari nol tidak mewakili pembacaan yang gagal kecuali fungsi mengembalikan FALSE.

Semacam mekanisme waktu habis yang diimplementasikan sistem atau yang diimplementasikan pemantauan harus memastikan bahwa ReadPort fungsi akan kembali dalam jumlah waktu yang wajar, untuk menghindari mengulur-ulur penampung.

Pemantau bahasa dapat diterima untuk memanggil rutinitas monitor ReadPort port di luar pasangan StartDocPort/EndDocPort . (Panggilan seperti itu mungkin dihasilkan oleh pemeriksaan utas untuk status yang tidak diminta.) Namun, beberapa pemantau port mungkin gagal dalam panggilan seperti itu, sehingga pemantau bahasa harus ditulis untuk menangani kegagalan ini.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header winsplp.h (termasuk Winsplp.h)
Pustaka NtosKrnl.exe

Lihat juga

GetPrinterDataFromPort

StartDocPort

OpenPortEx

OpenPort

EndDocPort