获取主机中所有的逻辑驱动器,以驱动器根路径字符串返回,其函数原型如下: DWORD GetLogicalDriveStrings( DWORD nBufferLength, LPTSTR lpBuffer); 参数: nBufferLength: 参数lpBuffer所指向的内存空间的大小,以字节为单位。 lpBuffer: 指向存储返回结果字符串的内存空间 返回值: 函数的返回值指明了函数调用是否成功,如果成功则返回缓冲区中返回结果的总长度。如果返回值大于nBufferLength,说明给定的缓冲区大小不够,返回值是实际需要的大小。如果返回0,则说明函数运行出错。 使用说明: 这个API实现了与GetLogicalDrives同样的功能,却以一种更直观的方式返回执行结果。函数执行结果放在lBuffer所指向的内存区域中,此内存区域大小有nBufferLength参数指定,使函数返回结果不至于溢出。在调用此函数前需保证内存分配。 函数调用成功后,将在缓冲区中依次填入本机所具有的驱动器根路径字符串,假如系统中有5个逻辑驱动器“C:\”、“D:\”、“E:\”,“F:\”、“I:\”。执行后在缓冲区中的结果如下: 0x43 0x3a 0x5c 0x00 0x44 0x3a 0x5c 0x00 0x45 0x3a 0x5c 0x00 0x46 0x3a 0x5c 0x00 0x49 0x3a 0x5c 0x00 0x00 也就是连续存放了“C:\”、“D:\”、“E:\”,“F:\”、“I:\”这五个字符串(会在每个字符串后加一个‘\0’结束符,在所有卷标字符串的最后在加一个结束符)。 实例代码如下: #include <Windows.h>
#include <stdio.h>
#define BUFSIZE 1024
int main(void) {
CHAR szLogicalDriveStrings[BUFSIZE];
DWORD iLength;
INT iSub;
ZeroMemory(szLogicalDriveStrings, BUFSIZE);
iLength = GetLogicalDriveStringsA(BUFSIZE-1, szLogicalDriveStrings);
for(iSub=0; iSub<iLength; iSub+=4) {
printf("%s ", szLogicalDriveStrings+iSub);
}
printf("\n");
return 0;
}
|
|