100分 请教关于VC6.0对磁盘扇区读写的问题

我们用单片机在不带文件系统的SD卡的第十个扇区写了些数据,用PC机读取SD卡的第十个扇区却不是那些数据,程序如下,我想知道单片机指的第十扇区和PC机指的第十扇区是不是同一... 我们用单片机在不带文件系统的SD卡的第十个扇区写了些数据,用PC机读取SD卡的第十个扇区却不是那些数据,程序如下,我想知道单片机指的第十扇区和PC机指的第十扇区是不是同一个扇区,如果不是该如何解决,希望能够有针对性的回答不要复制大篇幅的文章,谢谢
BOOL CSDDlg::ReadSectors(char bDrive, DWORD dwStartSector, WORD wSectors, LPBYTE lpSectBuff)
{
char devName[] = "\\\\.\\A:";
devName[4] =bDrive;
HANDLE hDev=CreateFile(devName, GENERIC_READ, FILE_SHARE_WRITE,NULL, OPEN_EXISTING, 0, NULL);
if(hDev==INVALID_HANDLE_VALUE)
return 0;
SetFilePointer(hDev,512*dwStartSector,0,FILE_BEGIN);
DWORD dwCB;
BOOL bRet=ReadFile(hDev,lpSectBuff,512*wSectors,&dwCB,NULL);
CloseHandle(hDev);
return bRet;
}
金毛狮王2007 说的我听得不是很明白,“读取SD卡的扇区0到buf”怎么读啊,用我那个函数可以吗?

我已经发现用我的这个读取扇区的函数读取的是逻辑扇区,和SD卡的实际物理扇区相差63,也就是说用我的这个函数读取0扇区时,实际上读的是SD卡的物理扇区63,我该如何才能访问到SD卡的物理0扇区呢,有些晕了
展开
 我来答
金毛狮王2007
2009-08-17 · TA获得超过529个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:404万
展开全部
即使SD卡没有文件系统,也可以有分区。也就是说在sd盘的开始出会有分区表。

读取SD卡的扇区0到buf。如果buf[0]不是0xEB或者0xE9,说明这是一个分区表。buf[454]开始的四个byte是该分区前的扇区数。例如63表示在这个分区前有63个扇区,那么这个分区的第一个扇区就是扇区63。buf[458]开始的四个byte是该分区的扇区数。例如7990000,不是这个分区有7990000个扇区。那么这个分区的块地址就是63~7990063。
一个设备可以最多有四个分区,其他三个分区的相关数据是在buf[470]/buf[474],buf[486]/buf[490],buf[502]/buf[506]。
注意,读取buf的时候检查最好两位,应该是55AA。

你只贴出了一段代码,看的不是很清楚,理论上是行的。我手上没单片机,有块ARM,大家一起切磋啊
lijiakxl
2009-08-16 · TA获得超过231个赞
知道小有建树答主
回答量:481
采纳率:0%
帮助的人:418万
展开全部
技术含量太高 不会
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式