VC获取硬盘序列号

这篇博客介绍了如何在Windows NT/2000/XP系统下通过C++获取硬盘序列号。通过DeviceIoControl和CreateFileA函数交互,使用IDE_ATAPI_IDENTIFY或IDE_ATA_IDENTIFY命令读取硬盘信息,并解析识别数据得到序列号。
摘要由CSDN通过智能技术生成

//h文件中的代码

#include "iostream"      
#include "winioctl.h"      
     
#define  IDE_ATAPI_IDENTIFY  0xA1  //  Returns ID sector for ATAPI.       
#define  IDE_ATA_IDENTIFY    0xEC  //  Returns ID sector for ATA.       
#define  IOCTL_GET_DRIVE_INFO   0x0007c088       
#define  IOCTL_GET_VERSION          0x00074080       
     
typedef struct _GETVERSIONOUTPARAMS       
{       
    BYTE bVersion;      // Binary driver version.       
    BYTE bRevision;     // Binary driver revision.       
    BYTE bReserved;     // Not used.       
    BYTE bIDEDeviceMap; // Bit map of IDE devices.       
    DWORD fCapabilities; // Bit mask of driver capabilities.       
    DWORD dwReserved[4]; // For future use.       
} GETVERSIONOUTPARAMS, *PGETVERSIONOUTPARAMS, *LPGETVERSIONOUTPARAMS;   
 

/cpp中的代码

 

// Windows NT/2000/XP下读取IDE设备信息       
bool GetHardwarePhysical_IDE_Info_NT(HANDLE hPhysicalDriveIOCTL, PSENDCMDINPARAMS pSCIP, PSENDCMDOUTPARAMS pSCOP, BYTE bIDCmd, BYTE bDriveNum, PDWORD lpcbBytesReturned)      
{         
    // 为读取设备信息准备参数         
    pSCIP -> cBufferSize = IDENTIFY_BUFFER_SIZE;         
    pSCIP -> irDriveRegs.bFeaturesReg = 0;         
    pSCIP -> irDriveRegs.bSectorCountReg = 1;  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值