⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listdrives.cpp

📁 一台机器可能有不止一个CD-ROM驱动器。现在CD-ROM已经是PC机的标准配置
💻 CPP
字号:
//
#include "stdafx.h"
#include "resource.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

using namespace std; // for string class

//////////////////
// 下面是一个GetDriveType返回码与人可读字符串的迷你对照表
//
struct {
   UINT type;        // GetDriveType返回码类型
   LPCSTR name;      // ascii 名称
} DriveTypeFlags [] = {
   { DRIVE_UNKNOWN,     "未知" },
   { DRIVE_NO_ROOT_DIR, "无效路经" },
   { DRIVE_REMOVABLE,   "可移动" },
   { DRIVE_FIXED,       "固定" },
   { DRIVE_REMOTE,      "网络驱动器" },
   { DRIVE_CDROM,       "CD-ROM" },
   { DRIVE_RAMDISK,     "随机存取磁盘" },
   { 0, NULL},
};

//////////////////
// 标准的 MFC 程序入口
//
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) {
		cerr << _T("Fatal Error: MFC initialization failed") << endl;
		return -1;
	}

   // 获取逻辑驱动器字符串- a:\b:\c:\... 等.
   // 还可以用GetLogicalDrives 以位图形式代替字符串形式获取信息

	TCHAR buf[100];
	DWORD len = GetLogicalDriveStrings(sizeof(buf)/sizeof(TCHAR),buf);

   // 显示每个驱动器的信息
   //
	string msg = "逻辑驱动器:\n";  // STL string
	for (TCHAR* s=buf; *s; s+=_tcslen(s)+1) {
		LPCTSTR sDrivePath = s;
		msg += sDrivePath;
		msg += " ";

      // GetDriveType 获取枚举值,如DRIVE_UNKNOWN等.
	  //
		UINT uDriveType = GetDriveType(sDrivePath);

	// 查找驱动器类型。在此我用了表(结构数组)来进行查找处理,过于繁琐了一些,
	// 但既然uDriveType 的值是连续的。
	// 用DriveTypeFlags[uDriveType]来代替线性查找也无妨。在实际的编程中通常可以这么做:
	
		// if (uDriveType & DEVICE_CDROM) {
		//	 ……
	    // }
        //
		for (int i=0; DriveTypeFlags[i].name; i++) {
			if (uDriveType == DriveTypeFlags[i].type) {
				msg += DriveTypeFlags[i].name;
				break;
			}
		}
		msg += '\n';
	}
	cout << msg.c_str();

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -