lshadowtt
驱动牛犊
驱动牛犊
  • 注册日期2007-11-23
  • 最后登录2008-02-16
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1543回复:8

我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OEMIoControl,有朋友能指点一下吗?

楼主#
更多 发布于:2007-11-23 13:55
我在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);
}
cool_harber
驱动小牛
驱动小牛
  • 注册日期2003-03-01
  • 最后登录2009-04-28
  • 粉丝0
  • 关注0
  • 积分524分
  • 威望132点
  • 贡献值0点
  • 好评度126点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-11-24 21:39
Re:我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OE
检查IOCTL_FMD_TEST这个的具体实现函数参数
博客:www.cnblogs.com/harber
lshadowtt
驱动牛犊
驱动牛犊
  • 注册日期2007-11-23
  • 最后登录2008-02-16
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-11-24 22:44
这个参数肯定是没有问题的呀,在FMD_OEMIoControl也做了相应的处理的。郁闷啊,好象在CreateFile的时候,连FMD_Init都没有调用到。
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-11-25 20:57
Re:我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OE
CreateFile时用这个设备DSKX: X为你的NANDFLASH加载为DSK设备时的编号.
学海无涯
lshadowtt
驱动牛犊
驱动牛犊
  • 注册日期2007-11-23
  • 最后登录2008-02-16
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-11-26 10:14
DSK是设备名,X:X分别是什么呢?请指点一下啊。
lshadowtt
驱动牛犊
驱动牛犊
  • 注册日期2007-11-23
  • 最后登录2008-02-16
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-11-26 15:27
Re:我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OEMIoControl,有朋友能指点一下吗 ..
现在我已经可以调用得到设备句柄了,可关键是DeviceIoControl函数总是返回错误,且错误值为参数错误(87)。
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-11-26 20:37
Re:我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OE
MDD层应该只实现了READ/WRITE等几个IOCTL,所以用你指定的IOCTL就会调不到.
学海无涯
lshadowtt
驱动牛犊
驱动牛犊
  • 注册日期2007-11-23
  • 最后登录2008-02-16
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-11-27 15:46
那我希望能够调用到FMD_OEMIoControl怎么办呢?这个的确有人已经实现过了的,只是我现在还是弄不清楚正确的方法!我也怀疑是根本没有能进入FAL层啊,不知道是哪里还漏掉了什么。
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-11-27 22:02
Re:我在wince的应用程序里调用nandflash的驱动,可驱动却调用不到FMD_OE
比较简单的办法,可以让READ/WRITE某个特定的BLOCK时执行你的操作就行了.
学海无涯
游客

返回顶部