分享

GetLogicalDriveStrings

 tianht 2015-04-21
获取主机中所有的逻辑驱动器,以驱动器根路径字符串返回,其函数原型如下:
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; }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多