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 参数接收的句柄是监视器提供的 OpenPortOpenPortEx 函数提供的端口句柄。

通常,语言监视器的 WritePort 函数将特定于语言的命令添加到 pBuffer指向的缓冲区中包含的数据流,然后将修改后的数据流传递给端口监视器的 WritePort 函数。

端口监视器服务器 DLL 的 WritePort 函数通常调用 WriteFile(Microsoft Windows SDK 文档中所述)将数据流发送到内核模式端口驱动程序。

典型的打印作业包含对 WritePort的多个调用。 每个调用可以具有不同的 cbBuf 值。

该函数应通过将数字放置在 指向的位置来返回成功写入的字节数。 对于语言监视器,此数字不得包含添加到数据流的额外特定于语言的字节数。

后台处理程序通过检查 WritePort的返回值而不是返回的字节计数来确定写入作的成功或失败。 因此,返回的字节计数为零并不表示写入失败,除非函数返回 FALSE

某种系统实现或监视器实现的超时机制必须确保 WritePort 函数在合理的时间内返回,以避免停止后台处理程序。

语言监视器可以在 StartDocPort/EndDocPort 对之外调用端口监视器的 WritePort 例程。 但是,某些端口监视器可能会失败这样的调用,因此必须编写语言监视器来处理此故障。

要求

要求 价值
目标平台 桌面
标头 winsplp.h (包括 Winsplp.h)
NtosKrnl.exe

另请参阅

StartDocPort

OpenPortEx

OpenPort

MONITOR2

EndDocPort