精易论坛

标题: 系统_取磁盘信息_只能取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)

16改为20

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