有篇文章(具体原文在那,我找不到了)提到在FLASH驱动中函数
BOOL FMD_OEMIoControl(DWORD dwIoControlCode, PBYTE pInBuf, DWORD nInBufSize, PBYTE pOutBuf, DWORD nOutBufSize, PDWORD pBytesReturned)
{
.........
.........
case 0xff123456:
FMD_ReadSector(..); //调用读Sector函数
break;
case 0xff654321:
FMD_WriteSector(..); //调用写Sector函数
break;
case 0xff123457:
FMD_EraseBlock(..); //调用擦除Block函数
break;
.........
.........
}
应用程序
hFirm = CreateFile(TEXT("DSK1:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hFirm == INVALID_HANDLE_VALUE)
{
printf("Open Flash Device Failed");
return 0;
}
iRet = DeviceIoControl(hFirm, 0xff123456, para1, para2, para3, para4, para5, para6); //Read Flash Sector
iRet = DeviceIoControl(hFirm, 0xff654321, para1, para2, para3, para4, para5, para6); //Write Flash Sector
iRet = DeviceIoControl(hFirm, 0xff123457, para1, para2, para3, para4, para5, para6); //Erase Flash Block
在WINCE6.0中不能这么用,为什么?
如果你的驱动是由Storage Manager加载的话,你应该调用OpenStore来打开,获得HANDLE
如果是由Device Manager加载的话,应该可以用CreateFile来打开
但这跟CE5.0还是6.0有关吗?
可以像文章里面说的那样用的,我试过,成功过!估计你的IOCTL宏没有定义好.他说的只是一个示意的数字,你不能拿来就用啊!要自己去定义的!
引用: 引用 2 楼 hzdysymbol 的回复:
如果你的驱动是由Storage Manager加载的话,你应该调用OpenStore来打开,获得HANDLE
如果是由Device Manager加载的话,应该可以用CreateFile来打开
但这跟CE5.0还是6.0有关吗?
http://blog.eeworld.net/nanjianhui/archive/2008/03/19/2196466.aspx
原文在这里
谢谢大家的支持
我自己再弄一下