精易论坛
标题:
系统_取磁盘信息_只能取16位
[打印本页]
作者:
lelele1979
时间:
2024-3-7 10:49
标题:
系统_取磁盘信息_只能取16位
.版本 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位。
143037rk09a8vhipoljplr.png
(24.71 KB, 下载次数: 1)
下载附件
2024-3-7 10:48 上传
16改为20
作者:
1752328925
时间:
2024-3-8 12:58
6666666666666
作者:
maozaiba
时间:
2024-3-11 16:35
这下完蛋了这么久了都没论坛小妹回复
作者:
guansidong
时间:
2024-3-14 06:40
感谢分享,很给力!~
作者:
123wad
时间:
2024-4-3 11:18
1饿12饿212饿221饿2饿饿2饿2饿饿2饿2
作者:
A三秋
时间:
2024-4-3 21:21
不错6666666
作者:
388266
时间:
2024-4-19 18:00
6666666666666
欢迎光临 精易论坛 (https://125.confly.eu.org/)
Powered by Discuz! X3.4