科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Windows打印管理在Linux平台的实现 (2)

Windows打印管理在Linux平台的实现 (2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了一种在 Linux 平台上实现 Windows 打印机管理的移植方法及具体实现细节。通过本文,读者可以了解相关技术,并把这些技术直接应用到实际软件开发中。

作者:yuanye 来源:赛迪网技术社区 2007年11月18日

关键字: 操作系统 Linux 打印 Windows

  • 评论
  • 分享微博
  • 分享邮件
 

3.CUPS 基础知识

CUPS 是 UNIX/Linux 平台上的打印系统。CUPS 的定义和实现是基于 IPP(Internet Printing Protocol)协议的。IPP 是通用的打印系统标准,它的功能和操作被一系列RFC(Request for Comments)所详细定义。这些具体功能和操作包括:建立 IPP请求,应答 IPP 请求和设置 IPP 请求等等。和 IPP 相关的 RFC 包括 RFC1179,RFC2910,RFC2911,RFC3196 等等。在网络协议中,IPP 位于 HTTP(Hyper-Text Transport Protocol)协议之上。因此以下代码示例将涉及到很多 IPP 和 HTTP的系统调用,例如 ippAddString() 和 httpConnectEncrypt() 等等。此外,在UNIX/Linux 平台上在使用 CUPS 之前要提前引入下列头文件:

#include 
#include 
#include 
#include

有了上述 CUPS 基础知识,下文将举例说明使用 CUPS 实现打印机管理移植的技术细节。

4.获取打印机数量

Windows 通过 API EnumPrinters() 的返回参数 pcReturned 来获取系统的打印机数量。Windows 程序的具体实现如下所示:

int n_PrinterCount;
EnumPrinters( , , , , , , &n_PrinterCount);

在 Linux 中,CUPS 函数 cupsGetDests() 可实现同样的功能。需要注意的是,在调用结束后,调用者需要使用 cupsFreeDests() 来释放内存。

cups_dest_t *dests;
int n_PrinterCount = cupsGetDests( &dests );
cupsFreeDests(count, dests);
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章