WinCE下獲取SD卡容量(By Walle@ARMCE)

http://www.armce.com/bbs/thread-113-1-2.html 

 

常用代碼段: 從block設備中讀取扇區大小,扇區數,和總容量等。

  1. void GetStorageInfo()
  2. {
  3.                 DISK_INFO  m_devinfo;
  4.         BOOL  buf=1;
  5.         unsigned long BytesReturned;
  6. //這裏DSK1:的名字要根據具體你的塊設備index來的,sd卡的index一般不定死,但你可以用註冊表工具從Active下面找到被加載的所有block設備,你可以知道哪個DSK是哪個存儲設備。5樓更新了具體的方法。
  7.         HANDLE        h_nfd = CreateFile( L"DSK1:",
  8.                 GENERIC_READ,
  9.                 0,
  10.                 NULL,
  11.                 OPEN_EXISTING,
  12.                 0,
  13.                 NULL);
  14.         if(h_nfd==NULL)
  15.                 ::MessageBox ( NULL, L"ERRO in createfile", L"ERROR", 0);
  16.        
  17.         if ( FALSE == DeviceIoControl(
  18.                 h_nfd,
  19.                 IOCTL_DISK_GETINFO,
  20.                 NULL,
  21.                 0,
  22.                 &m_devinfo
  23.                 sizeof(m_devinfo),
  24.                 &BytesReturned,
  25.                 NULL
  26.                 )) {
  27.                 ::MessageBox ( NULL, L"DISK_IOCTL_GETINFO", L"ERROR", 0);
  28.                 return ;
  29.         }
  30.         CString tmp;
  31.         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 );
  32.         ::MessageBox ( NULL, tmp, L"ERROR", 0);
  33.        
  34.         CloseHandle(h_nfd);       
  35. }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章