3354|6

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WinCE.net 向SD卡中写数据,怎么判断SD卡的剩余内存啊?? [复制链接]

我不停地往SD卡中写入一个文件,怎么判断文件是否写满,SD卡的剩余内存啊??
此帖出自WindowsCE论坛

最新回复

在哪儿啊?指点一下!  详情 回复 发表于 2009-12-29 12:46
点赞 关注
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
参考下面代码
void GetStorageInfo()
{
                DISK_INFO  m_devinfo;
        BOOL  buf=1;
        unsigned long BytesReturned;
//这里DSK1:的名字要根据具体你的块设备index来的,sd卡的index一般不定死,但你可以用注册表工具从Active下面找到被加载的所有block设备,你可以知道哪个DSK是哪个存储设备。5楼更新了具体的方法。
        HANDLE        h_nfd = CreateFile( L"DSK1:",
                GENERIC_READ,
                0,
                NULL,
                OPEN_EXISTING,
                0,
                NULL);
        if(h_nfd==NULL)
                ::MessageBox ( NULL, L"ERRO in createfile", L"ERROR", 0);
         
        if ( FALSE == DeviceIoControl(
                h_nfd,
                IOCTL_DISK_GETINFO,
                NULL,
                0,
                &m_devinfo
                sizeof(m_devinfo),
                &BytesReturned,
                NULL
                )) {
                ::MessageBox ( NULL, L"DISK_IOCTL_GETINFO", L"ERROR", 0);
                return ;
        }
        CString tmp;
        tmp.Format(L"di_bytes_per_sect=%d di_total_sectors =%d Total Captal=%d\r\n",inbuf.di_bytes_per_sect,inbuf.di_total_sectors,di_total_sectors*di_bytes_per_sect );
        ::MessageBox ( NULL, tmp, L"ERROR", 0);
         
        CloseHandle(h_nfd);         
}
======================================
补充:
#include "winioctl.h"
#include "Diskio.h"

m_devinfo里面就会有sector总数和sector大小,进而算出总容量,这个是基于文件系统层的获得容量,并非实际物理容量
其中的DSK1:需要被替换成你的SD存储设备被加载的号码,一般为DSK2:

也可以通过枚举HKEY_LOCAL_MACHINE\Drivers\Active下的键值,来获得SD的DSK号码,比如
[HKEY_LOCAL_MACHINE\Drivers\Active\49]
"Hnd"=dword:005adc00
"Name"="DSK2:"
"Key"="\Drivers\\SDCARD\\ClientDrivers\\Class\\SDMemory_Class"
"BusParent"=dword:0059a2a0
"InterfaceType"=dword:00000000
"BusName"="SDCARD_0_0_0"
"ClientInfo"=dword:005a5080

这里的DSK2:就是你要传递的参数了


本文来自eeworld博客,转载请标明出处:http://blog.eeworld.net/lan120576664/archive/2009/09/21/4576760.aspx
此帖出自WindowsCE论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
BOOL GetDiskFreeSpaceEx(
  LPCWSTR lpDirectoryName,
  PULARGE_INTEGER lpFreeBytesAvailableToCaller,
  PULARGE_INTEGER lpTotalNumberOfBytes,
  PULARGE_INTEGER lpTotalNumberOfFreeBytes
);
此帖出自WindowsCE论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
BOOL GetDiskFreeSpaceEx(
  LPCWSTR lpDirectoryName,
  PULARGE_INTEGER lpFreeBytesAvailableToCaller,
  PULARGE_INTEGER lpTotalNumberOfBytes,
  PULARGE_INTEGER lpTotalNumberOfFreeBytes
);
此帖出自WindowsCE论坛
 
 
 

回复

1

帖子

0

TA的资源

禁止访问

5
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

6
 
去查帮助,看看 GetStoreInfo 相关的函数吧
此帖出自WindowsCE论坛
 
 
 

回复

1

帖子

0

TA的资源

禁止访问

7
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表