资源简介
C++ 获取硬盘序列号的代码,转发非原创,走过路过不要错过
代码片段和文件信息
#include
#include
#include
#define FILE_DEVICE_SCSI 0x0000001b
#define IOCTL_SCSI_MINIPORT_IDENTIFY ( ( FILE_DEVICE_SCSI << 16 ) + 0x0501 )
#define IOCTL_SCSI_MINIPORT 0x0004D008 // see NTDDSCSI.H for definition
#define IDENTIFY_BUFFER_SIZE 512
#define SENDIDLENGTH ( sizeof( SENDCMDOUTPARAMS ) + IDENTIFY_BUFFER_SIZE )
#define IDE_ATAPI_IDENTIFY 0xA1 // Returns ID sector for ATAPI.
#define IDE_ATA_IDENTIFY 0xEC // Returns ID sector for ATA.
#define DFP_RECEIVE_DRIVE_DATA 0x0007c088
typedef struct _IDSECTOR
{
USHORT wGenConfig;
USHORT wNumCyls;
USHORT wReserved;
USHORT wNumHeads;
USHORT wBytesPerTrack;
USHORT wBytesPerSector;
USHORT wSectorsPerTrack;
USHORT wVendorUnique[3];
CHAR sSerialNumber[20];
USHORT wBufferType;
USHORT wBufferSize;
USHORT wECCSize;
CHAR sFirmwareRev[8];
CHAR sModelNumber[40];
USHORT wMoreVendorUnique;
USHORT wDoubleWordIO;
USHORT wCapabilities;
USHORT wReserved1;
USHORT wPIOTiming;
USHORT wDMATiming;
USHORT wBS;
USHORT wNumCurrentCyls;
USHORT wNumCurrentHeads;
USHORT wNumCurrentSectorsPerTrack;
ULONG ulCurrentSectorCapacity;
USHORT wMultSectorStuff;
ULONG ulTotalAddressableSectors;
USHORT wSingleWordDMA;
USHORT wMultiWordDMA;
BYTE bReserved[128];
} IDSECTOR *PIDSECTOR;
typedef struct _DRIVERSTATUS
{
BYTE bDriverError; // Error code from driver or 0 if no error.
BYTE bIDEStatus; // Contents of IDE Error register.
// Only valid when bDriverError is SMART_IDE_ERROR.
BYTE bReserved[2]; // Reserved for future expansion.
DWORD dwReserved[2]; // Reserved for future expansion.
} DRIVERSTATUS *PDRIVERSTATUS *LPDRIVERSTATUS;
typedef struct _SENDCMDOUTPARAMS
{
DWORD cBufferSize; // Size of bBuffer in bytes
DRIVERSTATUS DriverStatus; // Driver status structure.
BYTE bBuffer[1]; // Buffer of arbitrary length in which to store the data read from the // drive.
} SENDCMDOUTPARAMS *PSENDCMDOUTPARAMS *LPSENDCMDOUTPARAMS;
typedef struct _SRB_IO_CONTROL
{
ULONG HeaderLength;
UCHAR Signature[8];
ULONG Timeout;
ULONG ControlCode;
ULONG ReturnCode;
ULONG Length;
} SRB_IO_CONTROL *PSRB_IO_CONTROL;
typedef struct _IDEREGS
{
BYTE bFeaturesReg; // Used for specifying SMART “commands“.
BYTE bSectorCountReg; // IDE sector count register
BYTE bSectorNumberReg; // IDE sector number register
BYTE bCylLowReg; // IDE low order cylinder value
BYTE bCylHighReg; // IDE high order cylinder value
BYTE bDriveHeadReg; // IDE drive/head register
BYTE bCommandReg; // Actual IDE command.
BYTE bReserved; // reserved for
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 21871 2008-01-03 14:40 GetHwId.cpp
文件 3413 2008-01-03 09:48 GetHwId.dsp
文件 539 2008-01-03 09:48 GetHwId.dsw
文件 903 2008-01-03 10:10 GetHwId.sln
..A..H. 8192 2008-01-03 14:41 GetHwId.suo
文件 4021 2008-01-03 11:39 GetHwId.vcproj
----------- --------- ---------- ----- ----
39157 7
相关资源
- 端口转发-c++一个不错的参考
- 使用vc++6.0调用opencv库函数生成5*5单位
- C++ 基础教程Beta 版
- LINUX C++下多个Makefile编写方法
- C++图像二值化代码
- 头戴设备实时瞳孔识别C++
- modbus完整协议源码c/c++
- GA遗传算法C++实现,控制台演示
- 用c++设计一个三角形类Triangle,包含三
- 用c++定义一个Book(图书)类
- Effective C++简体中文 完整书签
- C++实现的遗传算法实现TSP问题
- GPS卫星位置的计算
- 2个简单的专家系统源代码
- C++网络蜘蛛源码VS开发平台
- C++实现最小二乘法一元回归和多项式
- 房屋销售管理系统C++
- 条件平差的 C++代码
- MFC下好用的高速绘图控件-(Hight-Spe
- usb_hid_vc++6.0读写设备源码
- 换肤窗口VC++程序与源码
- 亦思C++VC调用
- 数据结构算法与应用--C++语言描述(代
- 非常好用的c++ ftp库源码vs2013工程
- C++实现的非常好的一个矩阵类
- VC++6.0写的网络爬虫程序
- 数据结构 银行排队系统
- c++11的中文文档
- C++调用百度地图案例VC++
- MFC 窗口缩放
评论
共有 条评论