首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows驱动程序开发本地调试问题。

Windows驱动程序开发本地调试问题。
EN

Stack Overflow用户
提问于 2013-11-11 02:04:16
回答 1查看 335关注 0票数 0

这是一个场景。我在windows 8机器上/也在windows 7机器上尝试过这个。

我正在开发一个驱动程序(镜像驱动/远程显示驱动)。我应该说,我将开始工作,因为我被困住了。

因此,我遵循了MSDN的KmdfSmall示例。

http://msdn.microsoft.com/en-us/library/windows/hardware/hh439665(v=vs.85).aspx

我把司机代码编好了。远程调试也在进行。

我没有在主机上看到任何调试消息(我已经将寄存器IHVDRIVER设置为0x8,我还将默认值设置为0xf,以便能够使用DbgPrint )。

再往前走。我真正的目标是让我的司机成为一名服务

http://www.codeproject.com/Articles/9504/Driver-Development-Part-1-Introduction-to-Drivers

我想在本地机器上测试。我不希望有要调试的目标和主机。普通的老式单机。

问题

1)当服务通过CreateServiceOpenService启动驱动程序时,它是调用DriverEntry函数还是等待某个用户级的应用程序使用该驱动程序。

2)当我运行应用程序将驱动程序作为服务器加载时,DbgPrintEx应该在哪里打印DebugView或WinDbg或其他位置。

3)如果我用

代码语言:javascript
复制
CreateService

我的sys文件必须在windows/system32 32/drivers文件夹中吗?我在某个地方读到,在64位机器中,CreateService只从系统文件夹加载。

4)当我将它作为一项服务启动时,我应该在任务管理器上看到它吗?

5)如果调用DriverEntry来插入驱动程序,那么它是否可以再次调用,或者必须等到卸载时才调用?所以我加载我的驱动程序,忘记优雅地卸载它并再次运行我的程序,它会调用DriverEntry吗?

我知道这里有很多问题。提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-11 06:46:30

无法使用旧风格的API安装KMDF驱动程序。检查来自MSDN的这个样本

您还需要考虑它是什么样的驱动程序,过滤器驱动程序或实际的设备驱动程序等等。

1)当服务通过CreateService和OpenService启动驱动程序时,它是调用DriverEntry函数还是等待某个用户级的应用程序使用该驱动程序。

一旦加载了驱动程序,就会调用它的DriverEntry例程。

2)当我运行应用程序将驱动程序作为服务器加载时,DbgPrintEx应该在哪里打印DebugView或WinDbg或其他位置。

当DebugView或WinDbg都没有运行时,输出就会丢失,并且不会在任何地方打印/记录。

3)如果我使用的是CreateService,我的sys文件是否必须位于windows/system32 32/drivers文件夹中?我在某个地方读到,在64位机器中,CreateService只从系统文件夹加载。

较新的窗口有这样的限制。

4)当我将它作为一项服务启动时,我应该在任务管理器上看到它吗?

内核驱动程序没有在任务管理器中列出,因为它们实际上是OS的一部分,而不是单独的应用程序。但是,如果您有用户级服务,则在运行任务管理器时会将其列在任务管理器中。

5)如果调用DriverEntry来插入驱动程序,那么它是否可以再次调用,或者必须等到卸载时才调用?所以我加载我的驱动程序,忘记优雅地卸载它并再次运行我的程序,它会调用DriverEntry吗?

每次加载驱动程序时都会调用DriverEntry。如果驱动程序是按需加载,它将在每次加载/启动驱动程序时运行,即使驱动程序没有很好地卸载(例如,泄漏内存/锁等)。但是,如果驱动程序不能整齐地卸载,您可能会在不稳定的系统和BSOD中结束。

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

https://stackoverflow.com/questions/19897770

复制
相关文章

相似问题

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