我正在使用一个WinCE设备,它有一个用MFC编写的无线电管理器驱动程序。在无线电GUI的代码中,我可以看到调用了特定IOCTL的函数Deviceiocontrol。但是,我无法跟踪此函数调用的特定代码段。有人能告诉我Deviceiocontrol是怎么工作的吗?
发布于 2010-04-21 20:35:56
DeviceIoControl通过使用文件句柄直接调用设备驱动程序。如果你想进入设备驱动程序本身,你必须使用内核调试器。
文件句柄表示一个内核对象,它由一个包含函数表的DEVICE_OBJECT结构组成。在此表中,在IRP_MJ_DEVICE_CONTROL的索引处,驱动程序设置其句柄函数。然后,使用被打包到IRP中的io控制参数来调用该函数。
发布于 2010-04-28 21:28:08
您是否有IOCTL发送到的驱动程序的源代码?
将句柄传递给DeviceIoControl
-调用CreateFile(L"XXX#:",...)
- XXX作为注册表中设置的驱动程序的前缀来打开句柄。#是驱动程序在加载时提供的索引(也可以在注册表中设置)。
要查看所执行的功能,请在驱动程序的源代码中搜索发送给DeviceIoControl
的IOCTL。您可以在驱动程序的XXX_IoControl
实现中找到它。
https://stackoverflow.com/questions/2682684
复制相似问题