通過(guò)LabVIEW獲取硬盤(pán)序列號
1、原理
硬盤(pán)讀寫(xiě)端口的具體含義
對硬盤(pán)進(jìn)行操作的常用端口是1f0h~1f7h號端口,各端口含義如下:
端口號 讀還是寫(xiě) 具體含義
1F0H 讀/寫(xiě) 用來(lái)傳送讀/寫(xiě)的數據(其內容是正在傳輸的一個(gè)字節的數據)
1F1H 讀 用來(lái)讀取錯誤碼
1F2H 讀/寫(xiě) 用來(lái)放入要讀寫(xiě)的扇區數量
1F3H 讀/寫(xiě) 用來(lái)放入要讀寫(xiě)的扇區號碼
1F4H 讀/寫(xiě) 用來(lái)存放讀寫(xiě)柱面的低 8位字節
1F5H 讀/寫(xiě) 用來(lái)存放讀寫(xiě)柱面的高 2位字節(其高 6位恒為 0)
1F6H 讀/寫(xiě) 用來(lái)存放要讀/寫(xiě)的磁盤(pán)號及磁頭號
第 7位 恒為 1
第 6位 恒為 0
第 5位 恒為 1
第 4位 為 0代表第一塊硬盤(pán)、為 1代表第二塊硬盤(pán)
第3~0位 用來(lái)存放要讀/寫(xiě)的磁頭號
1f7H 讀 用來(lái)存放讀操作后的狀態(tài)
第 7位 控制器忙碌
第 6位 磁盤(pán)驅動(dòng)器準備好了
第 5位 寫(xiě)入錯誤
第 4位 搜索完成
第 3位 為 1時(shí)扇區緩沖區沒(méi)有準備好
第 2位 是否正確讀取磁盤(pán)數據
第 1位 磁盤(pán)每轉一周將此位設為1,
第 0位 之前的命令因發(fā)生錯誤而結束
寫(xiě) 該位端口為命令端口,用來(lái)發(fā)出指定命令
為50h 格式化磁道
為20h 嘗試讀取扇區
為21h 無(wú)須驗證扇區是否準備好而直接讀扇區
為22h 嘗試讀取長(cháng)扇區(用于早期的硬盤(pán),每扇可能不是 512字節,而是128字節到1024
之間的值)
為23h 無(wú)須驗證扇區是否準備好而直接讀長(cháng)扇區
為30h 嘗試寫(xiě)扇區
為31h 無(wú)須驗證扇區是否準備好而直接寫(xiě)扇區
為32h 嘗試寫(xiě)長(cháng)扇區
為33h 無(wú)須驗證扇區是否準備好而直接寫(xiě)長(cháng)扇區
上面是磁盤(pán)0的指令,下面是磁盤(pán)1的
171H 1號硬盤(pán)錯誤寄存器
172H 1號硬盤(pán)數據扇區計數
173H 1號硬盤(pán)扇區數
174H 1號硬盤(pán)柱面(低字節)
175H 1號硬盤(pán)柱面(高字節)
176H 1號硬盤(pán)驅動(dòng)器/磁頭寄存器
177H 1號硬盤(pán)狀態(tài)寄存器
2、操作

接下來(lái)的工作就很簡(jiǎn)單了。大致流程就是下面這樣了:
2.1
2.2
那么發(fā)送 a0,如果為從那么發(fā)送 b0
2.3
2.4
2.5
3、代碼及前面板

上面圖即為程序的全部代碼。
評論