正在编写Windows驱动程序
Writing drivers for Windows
我最近问了一个问题,我是否可以通过像NetLimiter和NetBalancer这样的C#WinForms应用程序来限制带宽。有人告诉我有两种方法可以做到这一点。要么通过适当的QoS,要么按照"NDIS网络筛选器驱动程序"的思路编写一些内容。使用QoS不是我想要的方式。所以我查阅了一些编写驱动程序所需的资料,发现了一些有趣的地方。重点是对C/C++有很好的理解,因为执行的代码很容易出现BSOD,因为它可以在所谓的"内核模式"中运行。我还发现了一个GitHub"dump",它看起来很有趣,吸引我在里面调查和四处看看。
正如你所看到的,我还远远不够专业。忽略这一点,这将是一个很好的开始,让我开始写驱动程序来监控,并进一步操纵网络来引入节流。
任何可能有帮助的帮助、指南或信息都将不胜感激。
附言:我不确定这是否是一个过于宽泛的问题,无法在Stack Overflow上回答(如前所述)。如果是的话,我会去哪里问这个问题?
事实上,这太宽泛了。驱动程序编写是一件复杂的事情,需要对计算机和操作系统的工作原理有很好的了解。此外,C#(以及.NET本身)在内核模式下确实不可用,因此C/C++是首选方式。尽管理论上任何非托管语言(如Pascal)都可以,但我还没有听说有人用它们编写驱动程序。微软自己的开发人员资源也是用C/C++编写的。
这就引出了为什么你想这么做的问题。
如果你在工作中需要它,而且有截止日期,那就忘了它。找一个已经知道这些东西的人。或者可能有一个图书馆可以满足需求。这些选项中的任何一个都会比你花在学习这些东西上的时间便宜。
然而,如果这是为了你自己的好奇心,那就去吧!我建议先学C。不是C++,它更复杂,而且对于驱动程序来说,无论如何使用C都会更容易。但是你以后也可以学习C++,这是很好的东西。C++大部分与C兼容,因此您可以从C开始,然后继续使用C++。
同时,找一本关于操作系统设计的好书。不是因为你想设计一个操作系统,而是想了解它所基于的基本概念。你应该很好地理解内核模式/用户模式、虚拟内存、中断、进程调度等。
学习一点汇编可能也很有用(尽管不是必需的)。
最后,当您觉得已经很好地掌握了以上内容时,请访问MSDN并开始阅读有关驱动程序开发的内容。将会有很长的文章和示例程序让你开始。调整它们并在虚拟机中玩,直到你得到你需要的东西。
而且。。。读这个。
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 是否有一个Windows驱动程序函数可以执行Windows文件api SeFileAttributes的等效功能
- Mongodb C驱动程序在Windows上安装失败
- c ++ 是否有任何用于列出 Windows 驱动程序管理器控制台中显示的设备驱动程序的 Windows API?
- Windows 7 驱动程序服务启动
- 在Windows上构建MongoDB C 驱动程序
- QT 5.8 SQL连接错误:Windows 10上未加载QMYSQL驱动程序
- Windows生物识别框架样本UMDF驱动程序:此设备无法启动.(代码10)
- 正在编写Windows驱动程序
- 问题:Windows 10:QMYSQL驱动程序未加载
- 构建 Windows 7 驱动程序时出错
- 我可以使用Visual Studio以外的IDE来开发Windows GPIO驱动程序吗
- C++:在Windows中禁用设备驱动程序
- QT:QSqlDatabase:QMYSQL驱动程序未加载[WINDOWS]
- 编译适用于 Windows 7 的 Windows 8 微筛选器驱动程序
- 检查给定设备 ID 是否存在 Windows 驱动程序
- 远程调试 Windows 8.1 驱动程序 Visual Studio 2013
- Windows驱动程序中的c++
- Visual Studio 2008需要使用哪个Windows驱动程序工具包
- Windows 驱动程序:ZwReadFile 返回STATUS_INVALID_HANDLE