通過LabVIEW獲取硬盤序列號
1、原理
硬盤讀寫端口的具體含義
對硬盤進行操作的常用端口是1f0h~1f7h號端口,各端口含義如下:
端口號 讀還是寫 具體含義
1F0H 讀/寫 用來傳送讀/寫的數(shù)據(jù)(其內(nèi)容是正在傳輸?shù)囊粋€字節(jié)的數(shù)據(jù))
1F1H 讀 用來讀取錯誤碼
1F2H 讀/寫 用來放入要讀寫的扇區(qū)數(shù)量
1F3H 讀/寫 用來放入要讀寫的扇區(qū)號碼
1F4H 讀/寫 用來存放讀寫柱面的低 8位字節(jié)
1F5H 讀/寫 用來存放讀寫柱面的高 2位字節(jié)(其高 6位恒為 0)
1F6H 讀/寫 用來存放要讀/寫的磁盤號及磁頭號
第 7位 恒為 1
第 6位 恒為 0
第 5位 恒為 1
第 4位 為 0代表第一塊硬盤、為 1代表第二塊硬盤
第3~0位 用來存放要讀/寫的磁頭號
1f7H 讀 用來存放讀操作后的狀態(tài)
第 7位 控制器忙碌
第 6位 磁盤驅(qū)動器準備好了
第 5位 寫入錯誤
第 4位 搜索完成
第 3位 為 1時扇區(qū)緩沖區(qū)沒有準備好
第 2位 是否正確讀取磁盤數(shù)據(jù)
第 1位 磁盤每轉(zhuǎn)一周將此位設為1,
第 0位 之前的命令因發(fā)生錯誤而結束
寫 該位端口為命令端口,用來發(fā)出指定命令
為50h 格式化磁道
為20h 嘗試讀取扇區(qū)
為21h 無須驗證扇區(qū)是否準備好而直接讀扇區(qū)
為22h 嘗試讀取長扇區(qū)(用于早期的硬盤,每扇可能不是 512字節(jié),而是128字節(jié)到1024
之間的值)
為23h 無須驗證扇區(qū)是否準備好而直接讀長扇區(qū)
為30h 嘗試寫扇區(qū)
為31h 無須驗證扇區(qū)是否準備好而直接寫扇區(qū)
為32h 嘗試寫長扇區(qū)
為33h 無須驗證扇區(qū)是否準備好而直接寫長扇區(qū)
上面是磁盤0的指令,下面是磁盤1的
171H 1號硬盤錯誤寄存器
172H 1號硬盤數(shù)據(jù)扇區(qū)計數(shù)
173H 1號硬盤扇區(qū)數(shù)
174H 1號硬盤柱面(低字節(jié))
175H 1號硬盤柱面(高字節(jié))
176H 1號硬盤驅(qū)動器/磁頭寄存器
177H 1號硬盤狀態(tài)寄存器
2、操作
接下來的工作就很簡單了。大致流程就是下面這樣了:
2.1
2.2
那么發(fā)送 a0,如果為從那么發(fā)送 b0
2.3
2.4
2.5
3、代碼及前面板
上面圖即為程序的全部代碼。
評論