【问题标题】:Writing drivers for Windows [closed]为 Windows 编写驱动程序 [关闭]
【发布时间】:2017-01-24 22:52:16
【问题描述】:

我最近问the question,我是否可以通过类似于 NetLimiter 和 NetBalancer 的 C# WinForms 应用程序来限制带宽。有人告诉我有两种方法可以做到这一点。通过正确的QoS 或按照“NDIS Network Filter Driver”的方式写一些东西。使用 QoS 不是我想要的方式。所以我查找了一些编写驱动程序所需的东西,并发现了一些有趣的点。诸如对 C/C++ 有很好的理解之类的要点,因为执行的代码很容易出现 BSOD,因为它可以在称为“内核模式”的东西中运行。我还发现了一个 GitHub “dump”,它看起来很有趣,并引诱我去调查和环顾四周。

如您所见,我还远远不够先进,无法在专业水平上深入研究。忽略这一点,我的冒险之旅将是一个好的开始,开始编写驱动程序以进行监控 - 并进一步操纵网络以引入节流。

任何可能有帮助的帮助、指南或信息都将受到赞赏。

PS:我不确定这是否(如前一个问题的评论中所述)是否过于宽泛,无法在 Stack Overflow 上回答。如果是这样,我会去哪里问这个?

【问题讨论】:

  • 这对我来说似乎太宽泛了(并且与教程/指南问题无关)。你可以去一个更传统的论坛,尝试找一位导师/导师,或者如果是我,根据你已经找到的内容开始写一些东西,然后在这里提出具体的问题。跨度>
  • 不过,@BradleyDotNET 在哪里可以找到导师/导师。有可以注册的表格吗?我发现了一些我不太了解的东西,因此我把它包括在内。虽然如果我从那开始可能会更好。
  • Pluralsight 有一个导师/帮助计划,我相信还有其他的。 Vilx 的建议是我至少要开始的路径。

标签: c++ windows networking driver


【解决方案1】:

确实,这太宽泛了。驱动程序编写是一件复杂的事情,需要很好地了解计算机和操作系统的工作原理。此外,C#(和 .NET 本身)在内核模式下确实不可用,因此 C/C++ 是首选方式。尽管理论上任何非托管语言(如 Pascal)都可以做到,但我还没有听说有人用它们编写驱动程序。微软自己的开发者资源也是用 C/C++ 编写的。

这给我们带来了为什么你想这样做的问题。

如果您在工作中需要它并且有截止日期 - 算了吧。找一个已经知道这些东西的人。或者可能有一个图书馆可以满足需求。这些选项中的任何一个都将比您花在学习所有这些东西上的时间便宜。

如果是出于您自己的好奇心,那就去吧!我建议先开始学习C。不是 C++,这更复杂,对于驱动程序来说,无论如何使用 C 会更容易。但是你也可以稍后再学习 C++,这是个好东西。 C++大部分与 C 兼容,因此您可以从 C 开始,然后继续使用 C++。

同时,获得一本关于操作系统设计的好书。不是因为你想设计一个操作系统,而是为了理解它所基于的基本概念。你应该对内核模式/用户模式、虚拟内存、中断、进程调度等有一个很好的了解。

学习一点组装可能也很有用(尽管不是必需的)。

最后,当您觉得您已经掌握了以上内容时,请前往MSDN 并开始阅读有关驱动程序开发的内容。将有很长的文章和示例程序来帮助您入门。调整它们并在虚拟机中玩耍,直到获得所需的东西。

还有……阅读this

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 2017-10-17
    • 2011-06-24
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多