【问题标题】:Writing Windows Port Monitor Basics编写 Windows 端口监视器基础知识
【发布时间】:2009-05-23 15:42:40
【问题描述】:

我正在尝试查找有关如何编写打印机端口监视器的基本示例、教程或博客文章。我下载了 Windows DDK 并通过 localmon 进行了挖掘,但看起来这个示例比简单的基础知识要复杂得多,据我了解,它与 OEM 端口监视器有点不同,因为它处理注册表项的方式和端口枚举。有没有人知道一篇博文、教程,甚至一本书,可以引导读者了解基本代码以开始使用?我找到了一些关于概念性内容的链接,但没有任何关于代码的内容。

【问题讨论】:

  • 您假定的“端口”监视器会做什么?
  • 它本质上是将数据包装到一个文件中并对其进行一些操作,但我真的不明白这对问题有何影响。就我而言,一个简单的编写调试输出的例子就足够了。我不想深入了解我想要完成的工作的细节,因为这往往会导致人们只是建议 Redmon 类似的东西。我真正想要的是一个用于端口监视器的基本 Hello World。
  • 您是否设法找到有关完成这一切的过程的信息(不使用 Redmon 或其他现有库等)?

标签: c windows winapi printing


【解决方案1】:

我可以推荐http://www.codeproject.com/KB/printing/wpa.aspx,它描述了如何编写打印机驱动程序,并且对构建端口监视器所需的内容提供了很好的提示。

但我的看法是,互联网上没有这方面的好教程(我很高兴找到能告诉我我错了的人)。所以,当我不得不处理这个任务时,我不得不以艰难的方式去做:我已经仔细阅读了从这一点开始的 MSDN 解释:http://msdn.microsoft.com/en-us/library/ff561109.aspx。在阅读 MSDN 的同时,我还检查了您提到的 DDK 中的代码并尝试理解它。我相信这个解决方案也适合你。

【讨论】:

    【解决方案2】:

    我是从specs 写的,实际上并没有那么多 API 需要实现。

    经常绊倒人们的一件事是 EnumPorts,假脱机程序为所有端口分配足够的内存,而不仅仅是你的。因此,您需要确保从 spoolers 缓冲区的末尾填充任何字符串,不要将它们直接放在结构之后。

    规范中没有这样说,但您可以放心地将 UI 和服务器功能放在同一个 DLL 中。

    还可以创建支持 NT 和更高版本的 Windows 2000 类型端口监视器的单个端口监视器。

    RedMon 中的代码比 localmon 示例更容易阅读,值得在开始之前查看。很好,因为可以在VS中编译,不需要使用DDK来构建。

    【讨论】:

      【解决方案3】:

      对于串行打印机,我也经历过同样的领域。我发现的最好的例子是this article in Dr Dobbs Journal。好的部分是串行端口驱动程序和用户空间控制程序都包括在内,并且该项目也可以用作如何设置 Visual Studio 来编译驱动程序的示例。这也是一些很难找到相关信息的东西。这篇文章讨论了一个旧的 NT 风格的驱动程序,它对我在 XP 上运行良好。

      CodeProject 上有很多关于编写驱动程序和程序以与之交互的好文章。它们包括源代码,并且大多数处理较新的 WDM 和 WDF 样式驱动程序。

      OSROnline 是另一个很好的来源,特别是用于讨论具体问题和常见错误。他们还有一些你需要的很棒的实用程序。

      我遇到的一些最清晰、最易理解的驱动程序代码是 Mark Russinovich 的示例代码。尽管微软在购买 Sysinternals 时撤回了所有源代码,但仍然可以在这里和那里找到一些最好的示例。

      司机很有趣。不管你做什么,在虚拟机中做。真的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-22
        • 1970-01-01
        • 2011-10-29
        • 2012-09-21
        • 2014-12-03
        • 1970-01-01
        • 1970-01-01
        • 2011-11-16
        相关资源
        最近更新 更多