|
.版本 2
.子程序 系统_取磁盘信息, 逻辑型, 公开, 获取系统磁盘信息
.参数 磁盘ID, 整数型, 可空, 留空为 磁盘0
.参数 磁盘信息, 精易_磁盘信息, 参考
.局部变量 hFile, 整数型
.局部变量 lpBytesReturned, 整数型
.局部变量 lpInBuffer, SCIP
.局部变量 lpOutBuffer, 字节集
.局部变量 bDM, 字节型
.局部变量 索引, 整数型
.局部变量 返回值, 逻辑型
hFile = CreateFileA (“\\.\PhysicalDrive” + 到文本 (磁盘ID), 位或 (2147483648, 1073741824), 0, 0, 3, 0, 0)
.如果真 (hFile ≠ -1)
lpInBuffer.irDriveRegs.bDriveHeadReg = 160
lpInBuffer.irDriveRegs.bCommandReg = 236
lpOutBuffer = 取空白字节集 (528)
.如果真 (_设备操作3 (hFile, 508040, lpInBuffer, 32, lpOutBuffer, 528, lpBytesReturned, 0) ≠ 0)
磁盘信息.型号 = 删首尾空 (到文本 (转换字节集 (取字节集中间 (lpOutBuffer, 71, 24))))
磁盘信息.序列号 = 删首尾空 (到文本 (转换字节集 (取字节集中间 (lpOutBuffer, 37, 16))))
磁盘信息.固件版本 = 删首尾空 (到文本 (转换字节集 (取字节集中间 (lpOutBuffer, 63, 8))))
返回值 = 真
.如果真结束
CloseHandle (hFile)
.如果真结束
返回 (返回值)
硬盘序列号只能取前16位。
正常应该是取前20位。
磁盘信息.序列号 = 删首尾空 (到文本 (转换字节集 (取字节集中间 (lpOutBuffer, 37, 16))))
改为:
磁盘信息.序列号 = 删首尾空 (到文本 (转换字节集 (取字节集中间 (lpOutBuffer, 37, 20))))
请修正。SATA硬盘序列号最长为20位。
|
-
16改为20
|