c语言 获取硬盘序列号,获取硬盘序列号的C++代码
下面是编程之家 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++代码相关推荐
- python获取主板序列号_LabVIEW获取主板序列号和硬盘序列号以进行软件加密
04-12阅读85 CPU序列号是唯一的编号,只能在处理器内部进行修改. 它由96位数字组成. 高32位是用于标识CPU类型的CPU ID. 每个处理器的低64位不同,并且唯一表示该处理器. 该CPU ...
- 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
开发语言:C/C++ 支持平台:Windows 实现功能: 通过WMI获取网卡MAC地址.硬盘序列号.主板序列号.CPU ID.BIOS序列号 下载地址: WMI_DeviceQuery.zip 版本 ...
- Python获取电脑硬件配置的封装类,可以获取CPU序列号、主板序列号、BIOS序列号、硬盘序列号和网卡MAC地址
Python获取电脑硬件配置的封装类,可以获取CPU序列号.主板序列号.BIOS序列号.硬盘序列号和网卡MAC地址. myPyHardware.py # -*- coding: utf-8 -*- i ...
- C/C++ 获取硬件唯一标识 (CPU序列号/硬盘号)
调用控制台来获取CPU序列号/硬盘号 不同PC的硬盘数量可能不同 若有多个硬盘,此处的输出将多个硬盘号拼接到了一起 若需拆分可自行修改. 注:插拔硬盘U盘等会造成获取到的硬盘号不同,如果想以此为机器码 ...
- c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存...
我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统 ...
- LabVIEW获取主板序列号和硬盘序列号用于软件加密
LabVIEW获取主板序列号和硬盘序列号用于软件加密* 1,通过系统命令获取,快速便捷,无32bit和64bit顾虑 2,利用硬盘ID和主板ID联合加密,安全性更高,且都是硬件唯一标识码 3,labv ...
- Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用
Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...
- Linux下查看硬盘序列号、设备序列号、操作系统版本和安装时间、系统启用时间等命令
Linux下查看硬盘序列号.设备序列号.操作系统版本和安装时间.启用时间等命令 最近由于工作需要查询一些硬盘序列号.设备序列号.操作系统版本和安装时间.系统启用时间等信息.所以对用到的命令进行一下总结 ...
- C语言获取硬件信息(CPU序列号,硬盘序列号,网卡IP、MAC地址、是否插入网线)
目录 一.前言 二.代码实现 2.1 获取CPU序列号 2.2 获取硬盘序列号 2.3 获取网卡信息 附:源代码下载 一.前言 本文主要介绍Linux和Windows下使用C语言获取各种硬件信息, ...
- 如何查找主机的型号、操作系统安装时间、硬盘序列号和设备序列号
文章目录 主机型号 方法1 方法2 方法3 操作系统安装时间 方法1 方法2 设备序列号 方法1 方法2 硬盘序列号 主机型号 方法1 右键我的电脑,左键属性: 注意和设备名称的区别. 方法2 win ...
最新文章
- C# http 性能优化500毫秒到 60 毫秒
- 利用组策略防止计算机访问共享资源
- Java实现算法导论中凸包问题Jarvis步进法
- Stm32 IAP程序编写及用户程序编写
- ADS 2013安装教程
- LeetCode Algorithm 204. 计数质数
- 在php里让字体划过变色,鼠标划过字体时如何用css来实现字体变色?(代码实测)...
- 性能测试--jmeter响应数据中文乱码【12】
- c++语言判断是否质数,怎样用C++程序判断一个数是否为素数
- 第5章 运算符、表达式和语句
- 跨模态行人重识别:Deep Learning for Person Re-identification:A Survey and Outlook(行人重识别综述)
- 顶会论文笔记:联邦学习——ATPFL: Automatic Trajectory Prediction Model Design under Federated Learning Framework
- 【HTML】常见的块元素,行内元素,行内块元素有哪些?
- 我参加第七届NVIDIA Sky Hackathon——训练ASR模型
- fatal: unable to access ‘https://github.com/golang/tools.git/‘: Encountered end of file
- Ubuntu下pip安装CPU版PaddlePaddle
- ARM裸机开发——Linux环境搭建和LED灯闪烁实验
- 解决看不到IDEA中lambda表达式、lambda不见了
- 芭芭熊智能机器人_儿歌故事唐诗芭芭熊
- jvm垃圾回收是什么时候触发的? 垃圾回收算法? 都有哪些垃圾回收器