阅读:2379回复:7
请教大家个IOcontrol的问题
再nandflash的驱动里有个FMD_iocontril的函数,我现在想在OEM_poweroff 这个函数里调用一下FMD_iocontril,请问一下怎么实现?
我现在是调用KernelIOcontrol();然后参数code传FMD对应的code,可是好像没起作用。 |
|
沙发#
发布于:2007-07-09 13:21
试试在fmd.h中添加对FMD_iocontril函数的定义,然后再在你调用的文件中include fmd.h
|
|
|
板凳#
发布于:2007-07-09 17:07
我发现选系统开始菜单的suspend后,根本就不会执行OEM_poweroff ,这是为什么?
|
|
地板#
发布于:2007-07-12 07:09
不知楼主为什么会这样的需求,这个从软件结构上来说是要严格禁止的.
点SUSPEND调不到OEM_POWEROFF,看看代码是不是没有链接上啊. |
|
|
地下室#
发布于:2007-07-12 10:19
链接是链接上了,点SUSPEND,报了个错,但是没走进OEM_POWEROFF,正常的话是应该走进去吗?
还有为什么这么做是禁止的?iocontrol不就是为特殊需求提供的自由接口吗? |
|
5楼#
发布于:2007-07-12 21:18
驱动程序的IOCTL在DEVICE.EXE之外调用时应该通过CreateFile得到一个句柄,然后用这个句柄去调用.
而不是直接链接那个函数. 正常情况下,点SUSPEND会调用到OEMPowerOff,既然有错,先把错误解决掉可能就好了. |
|
|
6楼#
发布于:2007-07-13 09:27
它报的错是:ERROR:power handler function yield to low priority thread.
这个应该是内核报的错吧,我没有给power handle 开线程。 版主帮忙解释下这是什么原因? 还有就是kernelIOcontrol,OEMIOcontrol不是不需要句柄吗? |
|
7楼#
发布于:2007-07-14 18:31
你把板上连的所有能去掉的设备都去掉试试.
那两个函数是不需要HANDLE的. |
|
|