首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有设备的设备驱动程序?

没有设备的设备驱动程序?
EN

Stack Overflow用户
提问于 2010-09-20 17:50:19
回答 3查看 3.3K关注 0票数 2

我正在创建一个需要使用一些内核级模块的应用程序,为此,我将应用程序分为两个:一个用户级程序和一个内核级程序。

在阅读了设备驱动程序和一些教程之后,我有点困惑。

可以有一个没有任何特定设备关联的设备驱动程序吗?除了在内核模式下工作的设备驱动程序(内核代码或其他什么)之外,还有其他东西吗?

反病毒程序和其他类似的应用程序是如何在内核模式下工作的?设备驱动程序是正确的方式,还是我遗漏了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-20 17:56:29

是的,设备驱动程序可以在没有连接到机器的实际硬件(即设备)的情况下工作。只需考虑模拟连接的SCSI驱动器(CD-ROM等)以挂载ISO映像的不同程序。或者想想TrueCrypt,它使用容器模拟(可移动的)驱动器,容器只不过是硬盘上的加密文件。

不过,一句警告:驱动程序开发需要更多的思考,必须更仔细地完成,没有捷径,良好的测试,通常希望您对Windows驱动程序模型有相当多的了解。请记住,错误和糟糕的驱动程序会危及整个系统的稳定性。

老实说,我不认为在这里阅读教程是足够的。你可能至少想买一本关于这个主题的像样的书。不过这只是我的2分钱。

票数 5
EN

Stack Overflow用户

发布于 2011-02-13 00:58:29

对不起,“Windows内部原理”这本书更多的是为好奇的读者准备的。如果您想从事驱动程序开发,或者最多将其作为了解体系结构的先决条件阅读,我不推荐使用它。周围还有很多其他的书,尽管它们中的大多数都有点老了。

根据您的目标,您可能会选择一个更简单的驱动程序模型。这并不是说驱动程序开发是微不足道的-事实上,我赞同上述警告的所有方面,甚至会更进一步-但这意味着,如果您不是编写遗留文件系统筛选器,而是基于筛选器管理器编写一个筛选器,那么您可以省去一些更繁琐的工作。但是,SP2之前的Windows XP没有默认安装,如果我没记错的话,Windows2000需要SP4+SRP+patch。WDF (Windows驱动程序基础)使得编写驱动程序变得更加容易,但它并不适合所有的需要。

在这里,术语“设备”有点糟糕的选择。设备在驱动程序中也有意义,它不一定是指硬件设备(如上所述)。粗略地说,PDO(物理设备对象)和CDO(控制设备对象)是有区别的。后者通常是你在用户模式下看到的内容,以及可以通过CreateFile,ReadFile,WriteFile,DeviceIoControl和朋友访问的内容。CDO通常通过符号链接对Win32域可见(不要与同名的文件系统实体混淆)。像C:这样的驱动器号分配实际上是指向底层设备的符号链接。这取决于驱动程序是CDO还是PDO。这种区别更多的是在课堂上传授的概念上的区别。

这就是我真正要推荐的。上一堂关于Windows驱动程序开发的课程。我本人参加过OSR的两次研讨会,我可以强烈推荐它。这些人知道他们在说什么。哦,在OSR Online上注册他们的邮件列表。

使用Sysinternals的WinObj查找有关设备和驱动程序对象和符号链接的更多信息。

至于AV的问题,是的,他们使用文件系统过滤驱动程序(上面简要提到过)。成熟的传统FSFD的唯一替代方案是微型过滤器。

也可以在内核模式下加载一种特殊类型的DLL。但一般来说,驱动程序是进入内核模式的方式,并且有很好的文档说明。

您可能需要考虑的书籍(由ISBN编写):最重要的是“编程Windows驱动程序模型”(0735618038)、"Windows NT设备驱动程序开发“(1578700582)、"Windows NT文件系统内部结构”(0976717514 (OSR的新版))、“未记录的Windows NT”(0764545698)和“未记录的Windows 2000机密”(0201721872) -当然还有"Windows NT/2000 Native API Reference“(9781578701995) (经典)。尽管最后三篇文章或多或少给了你一个更好的洞察力,并不是驱动程序开发人员严格需要的阅读材料。

票数 3
EN

Stack Overflow用户

发布于 2010-11-04 19:00:13

防病毒(和系统恢复)软件通常使用文件系统过滤器驱动程序。一个设备可以有多个像堆栈一样排列的过滤器驱动程序,并且该设备上的任何事件/操作都必须通过所有堆叠的驱动程序。例如,防病毒软件为磁盘设备安装筛选器驱动程序,以便它们可以拦截和扫描所有文件系统(读/写)操作。

正如上面的帖子所提到的,阅读一本好书是一个很好的开始。另外,安装DDK/WDK并参考捆绑的示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3750282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档