我正在使用WinCE设备,该设备在MFC中为其编写了无线电管理器驱动程序。在Radio GUI的代码中,我可以看到函数Deviceiocontrol被调用特定的IOCTL。但是,我无法跟踪此函数调用的特定代码段。谁能告诉我Deviceiocontrol是如何工作的?
答案 0 :(得分:3)
DeviceIoControl使用文件句柄调用设备驱动程序。如果要进入设备驱动程序本身,则必须使用内核调试程序。
文件句柄表示一个内核对象,它由一个包含函数表的DEVICE_OBJECT结构组成。在IRP_MJ_DEVICE_CONTROL索引的此表中,驱动程序设置其句柄功能。然后使用io控制参数调用该函数,这些参数打包到IRP中。
答案 1 :(得分:0)
您是否有发送IOCTL的驱动程序的源代码?
您将句柄传递给DeviceIoControl
- 使用对CreateFile(L"XXX#:",...)
的调用打开句柄 - XXX是注册表中设置的驱动程序的前缀。和#是驱动程序在加载时给出的索引(也可以在注册表中设置)
要查看执行的功能,请在驱动程序的源代码中搜索发送到DeviceIoControl
的IOCTL。您可以在驱动程序的XXX_IoControl
实现中找到它。