获取驱动器序列号

该程序使用Windows API来获取所有逻辑驱动器的名称,并进一步获取用户指定驱动器的序列号和文件系统类型。通过调用GetLogicalDriveStrings和GetVolumeInformation函数,实现驱动器信息的检索。
摘要由CSDN通过智能技术生成
#include  < stdafx.h >
#include 
< Windows.h >
#include 
< iostream >
#include 
< string >

// using namespace std;

void  findAllDrivers( void )
{
    std::cout 
<< "All Drivers are listed below  You can type one of them to see it's ID: " 
        
<< std::endl;
    DWORD dwNumBytesForDriverStrings;

    HANDLE hHeap;
    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't Use The Function GetLogicalDriveStrings!" << std::endl;
}

int  main( void )
{
    findAllDrivers();

    std::cout 
<< "Type a RootPathName of the Drivers(format X:/) >: " << std::flush;

    std::wstring strRootPath;
    
while(std::wcin >> strRootPath)
    
{
        LPCTSTR lpRootPath 
= strRootPath.c_str();
        LPTSTR lpVolumeNameBuffer 
= new wchar_t[12];
        DWORD nVolumeNameSize 
= 12;
        DWORD VolumeSerialNumber;
        DWORD MaxinumComponentLength;
        DWORD FileSystemFlags;
        LPTSTR lpFileSystemNameBuffer 
= new wchar_t[10];
        DWORD nFileSystemNameSize 
= 10;
        

        GetVolumeInformation(lpRootPath,lpVolumeNameBuffer,nVolumeNameSize,
            
&VolumeSerialNumber,&MaxinumComponentLength,&FileSystemFlags,
            lpFileSystemNameBuffer,nFileSystemNameSize);

        std::wcout 
<< "驱动器 " << strRootPath << " 的序列号为: " 
            
<<  VolumeSerialNumber << std::endl;

        std::wcout 
<< "File System Type: " << lpFileSystemNameBuffer << std::endl;

        std::cout 
<< "Type a RootPathName of the Drivers(format X:/) >: " << std::flush;
    }


}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值