#include<stdafx.h>
#include<Windows.h>
#include<iostream>
#include<string>
//usingnamespacestd;
voidfindAllDrivers(void)
...{
std::cout<<"AllDriversarelistedbelow Youcantypeoneofthemtoseeit'sID:"
<<std::endl;
DWORDdwNumBytesForDriverStrings;
HANDLEhHeap;
wchar_t*lp;
dwNumBytesForDriverStrings=GetLogicalDriveStrings(0,NULL)*sizeof(TCHAR);
if(dwNumBytesForDriverStrings!=0)
...{
hHeap=GetProcessHeap();
lp=(wchar_t*)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,dwNumBytesForDriverStrings);
GetLogicalDriveStrings(HeapSize(hHeap,0,lp),lp);
while(*lp!=0)
...{
std::wcout<<lp<<std::endl;
lp=wcschr(lp,0)+1;
}
}
else
std::cout<<"Can'tUseTheFunctionGetLogicalDriveStrings!"<<std::endl;
}
intmain(void)
...{
findAllDrivers();
std::cout<<"TypeaRootPathNameoftheDrivers(formatX:/)>:"<<std::flush;
std::wstringstrRootPath;
while(std::wcin>>strRootPath)
...{
LPCTSTRlpRootPath=strRootPath.c_str();
LPTSTRlpVolumeNameBuffer=newwchar_t[12];
DWORDnVolumeNameSize=12;
DWORDVolumeSerialNumber;
DWORDMaxinumComponentLength;
DWORDFileSystemFlags;
LPTSTRlpFileSystemNameBuffer=newwchar_t[10];
DWORDnFileSystemNameSize=10;

GetVolumeInformation(lpRootPath,lpVolumeNameBuffer,nVolumeNameSize,
&VolumeSerialNumber,&MaxinumComponentLength,&FileSystemFlags,
lpFileSystemNameBuffer,nFileSystemNameSize);
std::wcout<<"驱动器"<<strRootPath<<"的序列号为:"
<<VolumeSerialNumber<<std::endl;
std::wcout<<"FileSystemType:"<<lpFileSystemNameBuffer<<std::endl;
std::cout<<"TypeaRootPathNameoftheDrivers(formatX:/)>:"<<std::flush;
}
}
本文介绍了一个C++程序,该程序能够枚举系统中的所有磁盘驱动器,并允许用户输入指定的驱动器路径来获取其详细信息,包括序列号和文件系统类型。
2304

被折叠的 条评论
为什么被折叠?



