对虚拟设备进行编码的起点



我想写一些类似DaemonTools的东西:一种将自己作为真实设备(上一个例子中是DVD-ROM)呈现给系统的软件,但它却从文件中读取数据。我的要求不仅限于DVD-ROM。第一个目标是为Windows提供游戏杆/游戏板。

我是一名网络开发人员,所以我不知道从哪里开始这样的项目。我相信它必须用C/C++编写,但除此之外,我不知道从哪里开始。

有没有人试过这样的东西,可以给我一些入门技巧?

大多数驱动程序都是用C或C++编写的,所以如果你对这些语言不太了解,你需要在开始之前熟悉它们。Windows编程使用了许多有趣的快捷方式,这些快捷方式可能会让初学者感到困惑,例如PVOID(typedef void* PVOID)和LPVOID(typedef void* far LPVOD;)。你需要对指针作为概念和结构感到满意,因为你会使用很多指针。我建议编写一个非常简单的win32应用程序,作为掌握Windows风格的C/C++的练习。

然后,您的下一个调用端口是浏览Windows驱动程序工具包——特别是,您需要它来构建Windows驱动程序。在这个阶段,我的建议能力实际上取决于你在做什么和你有可用的硬件等,或者你是否真的在使用硬件。你需要知道如何驱动你的硬件,然后你需要选择一种合适的驱动程序编写方式——根据你需要实现的目标,有几种不同类型的驱动程序,你可能可以插入其中一种。

windows驱动程序套件包含大量的示例,包括一个实现虚拟烤面包机的驱动程序。这些应该为您提供起点。

我强烈建议您在虚拟机中对此进行测试。如果您的驱动程序成功构建,但导致运行时错误,那么如果您处于内核模式,结果很可能会导致windows完全崩溃。因此,如果虚拟机损坏,您可以恢复虚拟机,并且不必等待系统重新启动,从而为自己节省一些痛苦。它还将使调试更容易,因为可以使用虚拟串行电缆。


这是一项相当大的任务,所以在你开始之前,我会更彻底地研究Windows开发——首先检查你不能使用Windows API,然后看看用户模式驱动程序框架,最后,如果需要的话,看看内核级别的东西。

最新更新