.版本 2
.支持庫 spec
.局部變量 i, 整數型
.局部變量 文件句柄, 整數型
調試輸出 (取物理磁盤個數 ())
調試輸出 (讀扇區 (0, 63))
.子程序 取物理磁盤個數, 整數型
.局部變量 i, 整數型
.局部變量 文件句柄, 整數型
.局部變量 總數, 整數型
總數 = 0
.計次循環首 (1024, i)
文件句柄 = CreateFile (“\\.\PhysicalDrive” + 到文本 (i - 1), 2147483648, 1, 0, 3, 0, 0) ' \\\\.\\PhysicalDrive0
.如果 (文件句柄 > 0)
CloseHandle (文件句柄)
總數 = 總數 + 1
.否則
CloseHandle (文件句柄)
跳出循環 ()
.如果結束
.計次循環尾 ()
返回 (總數)
.子程序 讀扇區, 字節集, 公開
.參數 驅動器位置, 整數型, , 0為主盤
.參數 扇區號, 整數型
.局部變量 文件句柄, 整數型
.局部變量 讀寫結果, 邏輯型
.局部變量 數據緩沖區, 字節集, 靜態
.局部變量 dwCB, 整數型
.局部變量 讀寫位置, 整數型
.局部變量 Q, 字節集
.局部變量 P, 整數型
.局部變量 讀取到的數據, 字節集
讀取到的數據 = { }
文件句柄 = CreateFile (“\\.\PhysicalDrive” + 到文本 (驅動器位置), 2147483648, 1, 0, 3, 0, 0) ' \\\\.\\PhysicalDrive0
.如果真 (文件句柄 = -1)
返回 (讀取到的數據)
.如果真結束
讀寫位置 = SetFilePointer (文件句柄, 512 × 扇區號, 0, 0)
數據緩沖區 = 取空白字節集 (512)
讀寫結果 = ReadFileD (文件句柄, 數據緩沖區, 512, 取整數指針 (dwCB, dwCB, 0), 0)
讀取到的數據 = 數據緩沖區
CloseHandle (文件句柄)
返回 (讀取到的數據)
.子程序 寫扇區, 整數型, 公開
.參數 驅動器位置, 整數型, , 0為主盤
.參數 扇區號, 整數型
.參數 欲寫入數據, 字節集
.局部變量 文件句柄, 整數型
.局部變量 讀寫結果, 整數型
.局部變量 數據緩沖區, 字節集, 靜態
.局部變量 讀寫位置, 整數型
.局部變量 dwCB, 整數型
文件句柄 = CreateFile (“\\.\PhysicalDrive” + 到文本 (驅動器位置), 1073741824, 1, 0, 3, 0, 0) ' \\\\.\\PhysicalDrive0
.如果真 (文件句柄 = -1)
返回 (0)
.如果真結束
讀寫位置 = SetFilePointer (文件句柄, 512 × 扇區號, 0, 0)
數據緩沖區 = 取空白字節集 (512)
拷貝內存_ (數據緩沖區, 到字節集 (欲寫入數據), 取字節集長度 (欲寫入數據))
讀寫結果 = WriteFile (文件句柄, 數據緩沖區, 512, 取整數指針 (dwCB, dwCB, 0), 0)
CloseHandle (文件句柄)
返回 (讀寫結果)