下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

// GetHardDiskNum.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#ifndef _WIN32_WINNT

#define _WIN32_WINNT 0x0501

#endif

#include

#include

//

BOOL GetPhyDriveSerial(LPTSTR pModelNo,LPTSTR pSerialNo);

void ToLittleEndian(PUSHORT pWords,int nFirstIndex,int nLastIndex,LPTSTR pBuf);

void TrimStart(LPTSTR pBuf);

//

// Model Number: 40 ASCII Chars

// SerialNumber: 20 ASCII Chars

//

BOOL GetPhyDriveSerial(LPTSTR pModelNo,LPTSTR pSerialNo)

{

//-1是因为 SENDCMDOUTPARAMS 的结尾是 BYTE bBuffer[1];

BYTE IdentifyResult[sizeof(SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE - 1];

DWORD dwBytesReturned;

GETVERSIONINPARAMS get_version;

SENDCMDINPARAMS send_cmd = { 0 };

HANDLE hFile = CreateFile(_T("\\\\.\\PHYSICALDRIVE0"),GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,NULL);

if(hFile == INVALID_HANDLE_VALUE)

return FALSE;

//get version

DeviceIoControl(hFile,SMART_GET_VERSION,&get_version,sizeof(get_version),&dwBytesReturned,NULL);

//identify device

send_cmd.irDriveRegs.bCommandReg = (get_version.bIDEDeviceMap & 0x10)? ATAPI_ID_CMD : ID_CMD;

DeviceIoControl(hFile,SMART_RCV_DRIVE_DATA,&send_cmd,sizeof(SENDCMDINPARAMS) - 1,IdentifyResult,sizeof(IdentifyResult),NULL);

CloseHandle(hFile);

//adjust the byte order

PUSHORT pWords = (USHORT*)(((SENDCMDOUTPARAMS*)IdentifyResult)->bBuffer);

ToLittleEndian(pWords,27,46,pModelNo);

ToLittleEndian(pWords,10,19,pSerialNo);

return TRUE;

}

//把WORD数组调整字节序为little-endian,并滤除字符串结尾的空格。

void ToLittleEndian(PUSHORT pWords,LPTSTR pBuf)

{

int index;

LPTSTR pDest = pBuf;

for(index = nFirstIndex; index <= nLastIndex; ++index)

{

pDest[0] = pWords[index] >> 8;

pDest[1] = pWords[index] & 0xFF;

pDest += 2;

}

*pDest = 0;

//trim space at the endof string; 0x20: _T(' ')

--pDest;

while(*pDest == 0x20)

{

*pDest = 0;

--pDest;

}

}

//滤除字符串起始位置的空格

void TrimStart(LPTSTR pBuf)

{

if(*pBuf != 0x20)

return;

LPTSTR pDest = pBuf;

LPTSTR pSrc = pBuf + 1;

while(*pSrc == 0x20)

++pSrc;

while(*pSrc)

{

*pDest = *pSrc;

++pDest;

++pSrc;

}

*pDest = 0;

}

int _tmain(int argc,_TCHAR* argv[])

{

TCHAR szModelNo[48],szSerialNo[24];

if(GetPhyDriveSerial(szModelNo,szSerialNo))

{

_tprintf(_T("Model No: %s\n"),szModelNo);

TrimStart(szSerialNo);

_tprintf(_T("Serial No: %s\n"),szSerialNo);

}

else

{

_tprintf(_T("Failed.\n"));

}

getchar();

return 0;

return 0;

}

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

总结

以上是编程之家为你收集整理的获取硬盘序列号的C++代码全部内容,希望文章能够帮你解决获取硬盘序列号的C++代码所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

c语言 获取硬盘序列号,获取硬盘序列号的C++代码相关推荐

  1. python获取主板序列号_LabVIEW获取主板序列号和硬盘序列号以进行软件加密

    04-12阅读85 CPU序列号是唯一的编号,只能在处理器内部进行修改. 它由96位数字组成. 高32位是用于标识CPU类型的CPU ID. 每个处理器的低64位不同,并且唯一表示该处理器. 该CPU ...

  2. 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号

    开发语言:C/C++ 支持平台:Windows 实现功能: 通过WMI获取网卡MAC地址.硬盘序列号.主板序列号.CPU ID.BIOS序列号 下载地址: WMI_DeviceQuery.zip 版本 ...

  3. Python获取电脑硬件配置的封装类,可以获取CPU序列号、主板序列号、BIOS序列号、硬盘序列号和网卡MAC地址

    Python获取电脑硬件配置的封装类,可以获取CPU序列号.主板序列号.BIOS序列号.硬盘序列号和网卡MAC地址. myPyHardware.py # -*- coding: utf-8 -*- i ...

  4. C/C++ 获取硬件唯一标识 (CPU序列号/硬盘号)

    调用控制台来获取CPU序列号/硬盘号 不同PC的硬盘数量可能不同 若有多个硬盘,此处的输出将多个硬盘号拼接到了一起 若需拆分可自行修改. 注:插拔硬盘U盘等会造成获取到的硬盘号不同,如果想以此为机器码 ...

  5. c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存...

    我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统 ...

  6. LabVIEW获取主板序列号和硬盘序列号用于软件加密

    LabVIEW获取主板序列号和硬盘序列号用于软件加密* 1,通过系统命令获取,快速便捷,无32bit和64bit顾虑 2,利用硬盘ID和主板ID联合加密,安全性更高,且都是硬件唯一标识码 3,labv ...

  7. Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用

    Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...

  8. Linux下查看硬盘序列号、设备序列号、操作系统版本和安装时间、系统启用时间等命令

    Linux下查看硬盘序列号.设备序列号.操作系统版本和安装时间.启用时间等命令 最近由于工作需要查询一些硬盘序列号.设备序列号.操作系统版本和安装时间.系统启用时间等信息.所以对用到的命令进行一下总结 ...

  9. C语言获取硬件信息(CPU序列号,硬盘序列号,网卡IP、MAC地址、是否插入网线)

    目录 一.前言 二.代码实现 2.1 获取CPU序列号 2.2 获取硬盘序列号 2.3 获取网卡信息 附:源代码下载 一.前言   本文主要介绍Linux和Windows下使用C语言获取各种硬件信息, ...

  10. 如何查找主机的型号、操作系统安装时间、硬盘序列号和设备序列号

    文章目录 主机型号 方法1 方法2 方法3 操作系统安装时间 方法1 方法2 设备序列号 方法1 方法2 硬盘序列号 主机型号 方法1 右键我的电脑,左键属性: 注意和设备名称的区别. 方法2 win ...

最新文章

  1. C# http 性能优化500毫秒到 60 毫秒
  2. 利用组策略防止计算机访问共享资源
  3. Java实现算法导论中凸包问题Jarvis步进法
  4. Stm32 IAP程序编写及用户程序编写
  5. ADS 2013安装教程
  6. LeetCode Algorithm 204. 计数质数
  7. 在php里让字体划过变色,鼠标划过字体时如何用css来实现字体变色?(代码实测)...
  8. 性能测试--jmeter响应数据中文乱码【12】
  9. c++语言判断是否质数,怎样用C++程序判断一个数是否为素数
  10. 第5章 运算符、表达式和语句
  11. 跨模态行人重识别:Deep Learning for Person Re-identification:A Survey and Outlook(行人重识别综述)
  12. 顶会论文笔记:联邦学习——ATPFL: Automatic Trajectory Prediction Model Design under Federated Learning Framework
  13. 【HTML】常见的块元素,行内元素,行内块元素有哪些?
  14. 我参加第七届NVIDIA Sky Hackathon——训练ASR模型
  15. fatal: unable to access ‘https://github.com/golang/tools.git/‘: Encountered end of file
  16. Ubuntu下pip安装CPU版PaddlePaddle
  17. ARM裸机开发——Linux环境搭建和LED灯闪烁实验
  18. 解决看不到IDEA中lambda表达式、lambda不见了
  19. 芭芭熊智能机器人_儿歌故事唐诗芭芭熊
  20. jvm垃圾回收是什么时候触发的? 垃圾回收算法? 都有哪些垃圾回收器

热门文章

  1. 【语音识别】日语语音识别系统Julius(v4.4)的基于DNN的识别(5月8号:识别结果更新)
  2. 双三次插值 python实现_Python:用GPU实现双三次插值
  3. 区块链入门-完整版V1.0-Part5
  4. 【企业了解】巨量引擎(飞鱼CRM)
  5. Ubuntu版Julia安装与入门
  6. 操作迅捷CAD编辑器如何将CAD转换PDF
  7. HTML注册登录页面模板JS
  8. 数字电路:常见的锁存器浅析
  9. p6spy mysql8_P6spy监控打印SQL语句
  10. python配色_Python数据分析之Seaborn(配色方案)