取硬盘物理序列号
2010-12-01 09:49
295 查看
void ChangeByteOrder(LPSTR lpString, int nLen) { CHAR c; // 63 63 72 75 6E 2E 63 6F 6D for(int i = 0; i < nLen; i += 2) { c = lpString[i]; lpString[i] = lpString[i+1]; lpString[i+1] = c; } } //获取硬盘序列号 VOID GetDiskNum(HWND hWnd) { CHAR szDiskNum[40]={0}; SENDCMDINPARAMS scip = { 0 }; CHAR szBuffer[sizeof(SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE] = { 0 }; DWORD dwBytesRet = 0; HANDLE hDevice=INVALID_HANDLE_VALUE; hDevice = CreateFileW(L"\\\\.\\PhysicalDrive0",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,0); if(hDevice == INVALID_HANDLE_VALUE) { return; } scip.cBufferSize = IDENTIFY_BUFFER_SIZE; scip.irDriveRegs.bSectorCountReg = 1; scip.irDriveRegs.bSectorNumberReg = 1; scip.irDriveRegs.bDriveHeadReg = IDE_ATAPI_IDENTIFY; scip.irDriveRegs.bCommandReg = IDE_ATA_IDENTIFY; if(DeviceIoControl(hDevice, DFP_RECEIVE_DRIVE_DATA, &scip, sizeof(SENDCMDINPARAMS) - 1, szBuffer, sizeof(szBuffer), &dwBytesRet, NULL)) { PSENDCMDOUTPARAMS pOut = (PSENDCMDOUTPARAMS)szBuffer; PIDSECTOR pIdSec = (PIDSECTOR)(pOut->bBuffer); ChangeByteOrder(pIdSec->sSerialNumber, sizeof(pIdSec->sSerialNumber)); strncpy(szDiskNum, pIdSec->sSerialNumber, 20); } SetDlgItemTextA(hWnd,IDC_STATIC_DISKNUM,szDiskNum); return; } |
相关文章推荐
- c#如何获得cpu,硬盘的物理序列号
- vc获取硬盘物理序列号
- 获取硬盘物理序列号
- 用vb.net取硬盘物理序列号
- c#如何获得cpu,硬盘的物理序列号
- 用硬盘物理编号(序列号)、mac地址、文件版本、当前时间来生成机器序列号
- 获取硬盘物理序列号(VB.NET)
- 纯VB代码取得硬盘的物理序列号
- HOW TO:获取硬盘物理序列号(VB.NET)
- 通过WMI获得硬盘和CPU的物理序列号
- 读取硬盘的物理序列号
- HOW TO:获取硬盘物理序列号(VB.NET)
- c#如何获得cpu,硬盘的物理序列号
- 纯VB代码取得硬盘的物理序列号
- VC获取硬盘物理序列号
- c#如何获得cpu,硬盘的物理序列号
- 精品软件 推荐 硬盘物理序列号修改专家
- VB取硬盘的物理信息(序列号,容量,转速,型号)
- Delphi读取硬盘的物理序列号
- 读取硬盘物理序列号