#include <windows.h> #include <stdlib.h> #include <stdio.h> #define BUFSIZE 1024 void main(void) { CHAR SzLogicalDriveStrings[BUFSIZE]; PCHAR SzDrive; //把这个数组置空 ZeroMemory(SzLogicalDriveStrings,BUFSIZE);
//执行完后SzLogicalDriveStrings里存的是几个磁盘的字符串 GetLogicalDriveStrings(BUFSIZE-1,SzLogicalDriveStrings); SzDrive = (PCHAR)SzLogicalDriveStrings; do { MessageBox(NULL,SzDrive,"硬盘",MB_OK); SzDrive +=(lstrlen(SzDrive)+1);//lstrlen返回字符串的字符长度 } while(*SzDrive !='\x00');//当内存中的数据为空时退出,前面置空的 }
以上是通过GetLogicalDriveStrings函数获取硬盘信息
还可以通过FindFirstVolume和FindNextVolume获取硬盘信息
#include <windows.h> #include <stdlib.h> #include <stdio.h> #include <cstring> #define BUFSIZE 1024 LPSTR GetDirverInfo(LPSTR szDrive) { UINT uDriveType; uDriveType = GetDriveType(szDrive); switch(uDriveType) { case DRIVE_UNKNOWN: return "未知\n"; break; case DRIVE_NO_ROOT_DIR: return "无效\n"; break; case DRIVE_REMOVABLE: return "可被移除\n"; break; case DRIVE_FIXED: return "不能被移除\n"; break; case DRIVE_REMOTE: return "网络上的\n"; break; case DRIVE_CDROM: return "是个CD\n"; break; case DRIVE_RAMDISK: return "是U盘吧"; break; default: break; } } int main(void) { CHAR buf[BUFSIZE]; CHAR myMessage[BUFSIZE]; HANDLE hVol; BOOL flag; hVol = FindFirstVolume(buf,BUFSIZE); MessageBox(NULL,GetDirverInfo(buf),"硬盘",MB_OK); while(FindNextVolume(hVol,buf,BUFSIZE)) { MessageBox(NULL,GetDirverInfo(buf),"硬盘",MB_OK); } flag = FindVolumeClose(hVol); return (flag); }