阅读:1543回复:8
我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OEMIoControl,有朋友能指点一下吗?
我在wince的应用程序里调用nandflash的驱动,但是nandflash驱动却调用不到FMD_OEMIoControl。
我用CreateFile来取得的nandflash驱动句柄,并且该句柄不为空。然后调用DeviceIoControl,总是返回失败,GetLastError返回的错误代码是87,参数错误的意思。我在驱动FMD_OEMIoControl函数里设置的输出信息没有显示,应该是没有调用到这里。下面是我的代码,请各位朋友帮忙看看: HANDLE hNand; hNand = CreateFile(TEXT("\\ResidentFlash\\Vol:"), GENERIC_READ ¦GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hNand == INVALID_HANDLE_VALUE) { MessageBox(_T("Open flash driver failed!")); return; } DWORD dwReturn; BOOL bSuccess = DeviceIoControl(hNand, IOCTL_FMD_TEST, NULL, 0, NULL, 0, &dwReturn, NULL); if(!bSuccess) { DWORD dwError = GetLastError(); CString strInfo; strInfo.Format(_T("DeviceIoControl failed! - %d"), dwError); MessageBox(strInfo); } |
|
沙发#
发布于:2007-11-24 21:39
Re:我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OE
检查IOCTL_FMD_TEST这个的具体实现函数参数 |
|
|
板凳#
发布于:2007-11-24 22:44
这个参数肯定是没有问题的呀,在FMD_OEMIoControl也做了相应的处理的。郁闷啊,好象在CreateFile的时候,连FMD_Init都没有调用到。
|
|
地板#
发布于:2007-11-25 20:57
Re:我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OE
CreateFile时用这个设备DSKX: X为你的NANDFLASH加载为DSK设备时的编号. |
|
|
地下室#
发布于:2007-11-26 10:14
DSK是设备名,X:X分别是什么呢?请指点一下啊。
|
|
5楼#
发布于:2007-11-26 15:27
Re:我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OEMIoControl,有朋友能指点一下吗 ..
现在我已经可以调用得到设备句柄了,可关键是DeviceIoControl函数总是返回错误,且错误值为参数错误(87)。 |
|
6楼#
发布于:2007-11-26 20:37
Re:我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OE
MDD层应该只实现了READ/WRITE等几个IOCTL,所以用你指定的IOCTL就会调不到. |
|
|
7楼#
发布于:2007-11-27 15:46
那我希望能够调用到FMD_OEMIoControl怎么办呢?这个的确有人已经实现过了的,只是我现在还是弄不清楚正确的方法!我也怀疑是根本没有能进入FAL层啊,不知道是哪里还漏掉了什么。
|
|
8楼#
发布于:2007-11-27 22:02
Re:我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OE
比较简单的办法,可以让READ/WRITE某个特定的BLOCK时执行你的操作就行了. |
|
|