关于GetLogicalDriveStrings()
MSDN:
DWORD WINAPI GetLogicalDriveStrings( __in DWORD nBufferLength, __out LPTSTR lpBuffer );
对着msdn上的例子,写了个test出来:
1 #include "iostream" 2 #include "afxcmn.h" 3 4 int main() 5 { 6 7 TCHAR *pLogicalDrives = new TCHAR[MAX_PATH]; 8 pLogicalDrives[0] = '\0'; 9 int nLen = GetLogicalDriveStrings(MAX_PATH-1,pLogicalDrives); 10 std::cout<<nLen<<std::endl; 11 int i = 0; 12 do 13 { 14 15 std::cout<<pLogicalDrives+i<<std::endl; 16 i += 4; 17 } while (i<nLen); 18 19 delete[] pLogicalDrives; 20 21 return 0; 22 23 }
效果是:
我的硬盘有五个分区。CDEFG,GetLogicalDriveStrings返回来的nLen的值是20,每个分区占的位置是4字节。
而且GetLogicalDriveStrings的lpBuffer是这样排列的:
越努力,越幸运