WINCE与WM的差异(1)-查询文件系统目录结构

我在便携设备上写程序,需要查询设备上的文件系统目录结构,比如,我要知道设备的外部存储卡的目录,还要知道设备的flash分区的目录。这样,我要保存文件的时候,尽量先往存储卡上写,如果没有插卡,再往flash分区写。

 

首先查找MSDN,找到了FindFirstFlashCard这组API可用。

很高兴,在WM的SDK上编译链接过了,在WM设备上使用也很成功。

 

我又换了一台WINCE的设备,用CE5的SDK编译我的程序,编译不过,没有找到FindFirstFlashCard函数。

无奈,查找资料,又找到了FindFirstStore、FindFirstPartition这组API可以在CE上使用。

 

但是,FindFirstStore、FindFirstPartition在WM SDK中只有声明,没有定义,链接不过。

 

再无奈,只好在代码里面用宏定义来区分WINCE和WM,分别使用这两组API。

 

再找找有没有其他的办法。

 

试验代码如下:

//FindFirstFlashCard

{
  int index;
  // Total number of storage cards found.
  int iNumOfFlashCard = 0;    
  // Maximum number of storage cards to find.
  int iMaxCards = 10;
  // Whether to continue searching after finding a card.
  BOOL bContinue = TRUE;      
  // Root directory path of storage cards.
  TCHAR szRootDirPath[MAX_PATH];  
  // String for storing the storage card name with the full path.
  TCHAR szSCName[MAX_PATH];       
  // Search handle for storage cards.
  HANDLE hFlashCard;        
  // Structure for storing card information.
  WIN32_FIND_DATA *lpwfdFlashCard; 
  // Structure for storing card information temporarily.
  WIN32_FIND_DATA *lpwfdFlashCardTmp;
  lpwfdFlashCardTmp = (WIN32_FIND_DATA *) LocalAlloc
   (LPTR, iMaxCards * sizeof (WIN32_FIND_DATA));
  // Test for failed memory allocation.
  if (lpwfdFlashCardTmp == NULL)
   return 0;
  hFlashCard = FindFirstFlashCard (&lpwfdFlashCardTmp [0]);
  if (hFlashCard == INVALID_HANDLE_VALUE)
  {
   // Free the memory.
   LocalFree (lpwfdFlashCardTmp); 
   return 0;
  }
  while (bContinue)
  {
   iNumOfFlashCard += 1;
   // Search for the next storage card.
   bContinue = FindNextFlashCard (hFlashCard,
    &lpwfdFlashCardTmp [iNumOfFlashCard]);
  }
  // Close the search handle.
  FindClose (hFlashCard);         
  if (iNumOfFlashCard > 0)
  {
   // Allocate memory for lpwfdFlashCard.
   lpwfdFlashCard = (WIN32_FIND_DATA *) LocalAlloc
    (LPTR, iNumOfFlashCard * sizeof (WIN32_FIND_DATA));
   // Test for failed memory allocation.
   if (lpwfdFlashCard == NULL) 
   {
    // Free the temp card memory.
    LocalFree (lpwfdFlashCardTmp); 
    return 0;
   }
   // Assign lpwfdFlashCardTmp to lpwfdFlashCard.
   for (index=0; index < iNumOfFlashCard; ++index)
   {
    lpwfdFlashCard [index] = lpwfdFlashCardTmp [index];
   }
   // Free the memory.
   LocalFree (lpwfdFlashCard); 
  }
  LocalFree (lpwfdFlashCardTmp);
 }

 

//FindFirstStore
 {
  PARTINFO partinfo;
  STOREINFO storeinfo, storeinfo2;
  HANDLE hand1,hand2;
  BOOL bContinue = TRUE;      
  int iNumOfFlashCard = 0;    
  
  memset(&storeinfo2, 0, sizeof(storeinfo2));
  storeinfo2.cbSize = sizeof(storeinfo2);
  hand1 = FindFirstStore(&storeinfo2);
  if (hand1 == INVALID_HANDLE_VALUE)
  {
   DWORD ret = GetLastError();
   return FALSE;
  }

  bContinue = TRUE;
  iNumOfFlashCard = 0;
  while (bContinue)
  {
   iNumOfFlashCard += 1;
   memset(&storeinfo, 0, sizeof(storeinfo));
   storeinfo.cbSize = sizeof(storeinfo);
   bContinue = FindNextStore (hand1,&storeinfo);
  }
  FindCloseStore(hand1);
//
  hand1 = OpenStore(storeinfo2.szDeviceName);
  if (hand1 == INVALID_HANDLE_VALUE)
  {
   DWORD ret = GetLastError();
   return FALSE;
  }

  memset(&partinfo, 0, sizeof(partinfo));
  partinfo.cbSize = sizeof(partinfo);
  hand2 = FindFirstPartition(hand1, &partinfo);
  if (hand2 == INVALID_HANDLE_VALUE)
  {
   DWORD ret = GetLastError();
   return FALSE;
  }
  bContinue = TRUE;
  iNumOfFlashCard = 0;
  while (bContinue)
  {
   iNumOfFlashCard += 1;
   memset(&partinfo, 0, sizeof(partinfo));
   partinfo.cbSize = sizeof(partinfo);
   bContinue = FindNextPartition (hand2,&partinfo);
  }
  FindClosePartition(hand2);
 }

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值