功能:获取主机中所有的逻辑驱动器,以驱动器根路径字符串返回。
函数原型如下:
DWORD GetLogicalDriveStrings(DWORD nBufferLength,
LPTSTR lpBuffer);
参数:
nBufferLength: 指向的内存空间的大小,以字节为单位。
lpBuffer: 指向存储返回结果字符串的内存空间
返回值:
函数的返回值指明了函数调用是否成功,如果成功则返回缓冲区中返回结果的总长度;如果返回值大于nBufferLength,说明给定的缓冲区大小不够,返回值是实际需要的大小;如果返回0,则说明函数运行出错。
说明:
函数调用成功后,将在缓冲区中依次填入本机所具有的驱动器根路径字符串,假如系统中有4个逻辑驱动器“C:\”、“D:\”、“E:\”,“F:\”。执行后在缓冲区中的结果如下:
0x43 0x3a 0x5c 0x00 0x44 0x3a 0x5c 0x000x45 0x3a 0x5c 0x00 0x46 0x3a 0x5c 0x00 0x00
即连续存放了“C:\”、“D:\”、“E:\”,“F:\”这4个字符串。
注意:会在每个字符串后加一个‘\0’结束符,在所有卷标字符串的最后在加一个结束符)。
实例:将驱动器跟路径字符串分别写入组合框IDC_COMBO_DISK中,并选定c:/盘符。
int m_nDriveCount = 0;
char m_strDrives[200];
char *m_strDrive[50];
char *s1="c:\";
GetLogicalDriveStrings(200,m_strDrives);
m_strDrive[0] = m_strDrives;
for (i=1; strlen(m_strDrive[i-1])>0; i++,m_nDriveCount++)
{
SendDlgItemMessage(IDC_COMBO_DISK, CB_ADDSTRING, 0,
(LPARAM)m_strDrive[i-1]);
m_strDrive[i] = m_strDrive[i-1] + strlen(m_strDrive[i-1])+1;
if (strcmp(m_strDrive[i-1],s1)==0)
{
m_nSelDrive=i-1;
}
}
SendDlgItemMessage(IDC_COMBO_DISK, CB_SETCURSEL,m_nSelDrive,0);</span>