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