GetLogicalDriveStrings函数

    技术2022-05-20  48

    对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可以捕获这个错误信息!

     

     

     

     

     

     

     

     

    用GetLogicalDriveStrings获取磁盘列表

    TCHAR szDriverBuffer[512];CString csDriver;DWORD dwLength = GetLogicalDriveStrings(IN 512, OUT szDriverBuffer);// 执行后,在szDriverBuffer中存储的盘符数据格式:// C://<nul>D://<nul><nul> TCHAR *lpDriverBuffer = szDriverBuffer;while (*lpDriverBuffer != NULL){    csDriver = lpDriverBuffer;    lpDriverBuffer = lpDriverBuffer + csDriver.GetLength() + 1;        //cout<<csDriver<<endl;}


    最新回复(0)