登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

... ...

 
 
 

日志

 
 

GetLogicalDriveStrings函数  

2011-05-03 16:16:21|  分类: VC++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

对GetLogicalDriveStrings的理解:
函数原形:
DWORD GetLogicalDriveStrings(
  DWORD nBufferLength,  // size of buffer
  LPTSTR lpBuffer       // drive strings buffer
);

说明:GetLogicalDriveStrings函数将一个缓冲区lpBuffer填入在计算机上存在的硬盘盘符.

参数说明:
nBufferLength是缓冲区lpBuffer的大小,以字节为单位.它的大小不包含最后的空字符.如果它的值为零,缓冲区不可用.

lpBuffer指向一个接收各种以零结尾的字符串缓冲区,一个空字符用来区分各个可用硬盘的,最后在末尾有再以空字符结尾,假如
你的电脑上有C,D两个硬盘盘符,则它能得到一个字符串是:
'C',':','\',' ','D',':','\',' ',' '
即:C:\<null>D:\<null><null>


返回值:
如果函数成功结束,返回值是获得的字符串长度,以字节为单位,不包括最后的一个空字符,好像上面的字符串获得的长度就是8;硬盘
盘符的个数自乘以4就是了;记住:一个ANSI-ASCII码的空字符是一个字节,而一个Unicode码的空字符是两个字节.如果这个缓冲区不
够大,返回值会比nBufferLength大,这是缓冲区要求去获得全部硬盘盘符的原因.

如果函数失败,这个返回值是0;用GetLastError可以捕获这个错误信息!

========================================================

 

 

/*
 * 获取到根目录
 */
void CClient::GetRootDir(string &strRoot)
{
 char  szDrives[128];//临时变量
 if (GetLogicalDriveStrings(sizeof(szDrives), szDrives))   //获取根目录
 {
  char *pTemp = szDrives; //临时字符指针
  string strSubDir;  //临时变量
  
  while(TRUE)
  {
   if (*pTemp)
   {
    strSubDir += *pTemp;
   }else if (!*pTemp && *(pTemp+1))
   {
    strSubDir.erase(strSubDir.end());     //删除最后的'\'
    string strThirdDir;
    GetThirdSubDir(strSubDir,strThirdDir);    //获取子目录
    strSubDir += strThirdDir;
    
    strSubDir.insert(strSubDir.begin(), '<');   //左分隔标记
    strSubDir +='>';         //右分隔标记
    
    strRoot += strSubDir;        //加入发送字符变量
    
    strSubDir.erase(strSubDir.begin(), strSubDir.end());//清空该变量
    
   }else
   { 
    strSubDir.erase(strSubDir.end());     //删除最后的'\'
    
    string strThirdDir;
    GetThirdSubDir(strSubDir,strThirdDir);    //获取子目录
    strSubDir += strThirdDir;
    
    strSubDir.insert(strSubDir.begin(), '<');   //左分隔标记
    strSubDir +='>';         //右分隔标记
    
    strRoot += strSubDir;        //加入发送字符变量
    
    strSubDir.erase(strSubDir.begin(), strSubDir.end());//清空该变量
    break;            //结束
   }   
   pTemp++;
  }  
 }
 return;
}

  评论这张
 
阅读(2300)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018