WritePort 函数 (winsplp.h)
端口监视器的 WritePort
函数将数据写入打印机端口。
语法
BOOL WritePort(
_In_ HANDLE hPort,
_In_ LPBYTE pBuffer,
DWORD cbBuf,
_Out_ LPDWORD pcbWritten
);
参数
[in] hPort
调用方提供的端口句柄。
[in] pBuffer
调用方提供的指向包含要写入到端口的数据的缓冲区的指针。
cbBuf
调用方提供的大小(以字节为单位)pBuffer。
[out] pcbWritten
调用方提供的指针指向接收成功写入端口的字节数的位置。
返回值
如果作成功,函数应返回 true 。 否则,它应返回 FALSE。
言论
语言监视器 和端口监视器服务器 DLL 需要定义 WritePort
函数,并将函数的地址包含在 MONITOR2 结构中。
作为函数的 hPort 参数接收的句柄是监视器提供的 OpenPort 或 OpenPortEx 函数提供的端口句柄。
通常,语言监视器的 WritePort
函数将特定于语言的命令添加到 pBuffer指向的缓冲区中包含的数据流,然后将修改后的数据流传递给端口监视器的 WritePort
函数。
端口监视器服务器 DLL 的 WritePort
函数通常调用 WriteFile(Microsoft Windows SDK 文档中所述)将数据流发送到内核模式端口驱动程序。
典型的打印作业包含对 WritePort
的多个调用。 每个调用可以具有不同的 cbBuf 值。
该函数应通过将数字放置在 指向的位置来返回成功写入的字节数。 对于语言监视器,此数字不得包含添加到数据流的额外特定于语言的字节数。
后台处理程序通过检查 WritePort
的返回值而不是返回的字节计数来确定写入作的成功或失败。 因此,返回的字节计数为零并不表示写入失败,除非函数返回 FALSE。
某种系统实现或监视器实现的超时机制必须确保 WritePort
函数在合理的时间内返回,以避免停止后台处理程序。
语言监视器可以在 StartDocPort/EndDocPort 对之外调用端口监视器的 WritePort
例程。 但是,某些端口监视器可能会失败这样的调用,因此必须编写语言监视器来处理此故障。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | winsplp.h (包括 Winsplp.h) |
库 | NtosKrnl.exe |