- .版本 2
- .常量 SMART_GET_VERSION, "475264"
- .常量 SMART_RCV_DRIVE_DATA, "508040", , 返回ATA-2标识数据,自我监控分析和报告技术(SMART)阈值或设备的SMART属性。
- .常量 IDE_ATA_IDENTIFY, "236", , 读取ATA设备的命令
- .常量 IDE_ATAPI_IDENTIFY, "161", , 读取ATAPI设备的命令
- .常量 READ_ATTRIBUTES, "208"
复制代码
变量名 | 类 型 | 静态 | 数组 | 备 注 | szDevice | 字节集 | | | hDevice | 整数型 | | | dwSize | 整数型 | | | pSCOP | 整数型 | | | pSCIP | 整数型 | | | nDrive | 字节型 | | | pGVIP | 整数型 | | | bIDEDeviceMap | 字节型 | | | btIDCmd | 整数型 | | | bRet | 逻辑型 | | |
nDrive = 0 szDevice = 编码_Ansi到Unicode (“\\.\PhysicalDrive0”, )hDevice = CreateFileW (szDevice, 位或 ( #GENERIC_READ, #GENERIC_WRITE ), 位或 ( #FILE_SHARE_READ, #FILE_SHARE_WRITE ), #NULL, #OPEN_EXISTING, 0, #NULL )如果真 (hDevice = #INVALID_HANDLE_VALUE )返回 ()pGVIP = LocalAlloc ( #LMEM_ZEROINIT, 24)bRet = DeviceIoControl1 (hDevice, #SMART_GET_VERSION, #NULL, 0, pGVIP, 24, dwSize, #NULL )bIDEDeviceMap = __get_byte (pGVIP, 3 )LocalFree (pGVIP )btIDCmd = 选择 (位与 (右移 (bIDEDeviceMap, nDrive ), 16 ) ≠ 0, #IDE_ATAPI_IDENTIFY, #IDE_ATA_IDENTIFY )pSCIP = LocalAlloc ( #LMEM_ZEROINIT, 32 )__set_byte (pSCIP, 4, #READ_ATTRIBUTES )__set_byte (pSCIP, 5, 1 )__set_byte (pSCIP, 6, 1 )__set_byte (pSCIP, 9, 选择 (位与 (nDrive, 1 ) ≠ 0, 176, 160 )) __set_byte (pSCIP, 10, btIDCmd )pSCOP = LocalAlloc ( #LMEM_ZEROINIT, 528 )bRet = DeviceIoControl1 (hDevice, #SMART_RCV_DRIVE_DATA, pSCIP, 35, pSCOP, 528, dwSize, #NULL )CloseHandle (hDevice )pSCOP = pSCOP + 16 调试输出 (“序列号”, 删首尾空 (到文本 (AdjustString (pSCOP + 20, 20 )) )) 调试输出 (“固件版本”, 删首尾空 (到文本 (AdjustString (pSCOP + 46, 8 )) )) 调试输出 (“内部型号”, 删首尾空 (到文本 (AdjustString (pSCOP + 54, 40 )) )) 调试输出 (“磁头数”, 短整数_有符号转无符号 (取字节集 数 据 (指针到字节集 (pSCOP + 6, 2 ), #短整数型, )) )调试输出 (“柱面数”, 短整数_有符号转无符号 (取字节集 数 据 (指针到字节集 (pSCOP + 2, 2 ), #短整数型, )) )调试输出 (“每磁道扇区数”, 短整数_有符号转无符号 (取字节集 数 据 (指针到字节集 (pSCOP + 12, 2 ), #短整数型, )) )调试输出 (“厂家设定值”, 短整数_有符号转无符号 (取字节集 数 据 (指针到字节集 (pSCOP + 94, 2 ), #短整数型, )) )调试输出 (“缓冲大小”, 短整数_有符号转无符号 (取字节集 数 据 (指针到字节集 (pSCOP + 42, 2 ), #短整数型, )) )LocalFree (pSCIP )LocalFree (pSCOP )|
AdjustString | 字节集 | | |
pBuf | 整数型 | | | | dwSize | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | ptr | 整数型 | | | szBuf | 字节集 | | | i | 整数型 | | |
ptr = LocalAlloc ( #LMEM_ZEROINIT, dwSize )变量循环首 (0, dwSize - 2, 2, i )memcpy (ptr + i + 1, pBuf + i, 1 )memcpy (ptr + i, pBuf + i + 1, 1 )变量循环尾 ()szBuf = 指针到字节集 (ptr, dwSize )LocalFree (ptr )返回 (szBuf )
取硬盘信息.e
(889.05 KB, 下载次数: 363)
|