はじめに
Windows人気無いですね。
WSL2が導入されて、Windows1台でWindowsOSとLinuxOSを同時に動かせるので、私は好きです。
開発OSはやはりLinuxだけど、普段遣いはWindowsが一番幅が広く使えるので個人的には推してます。
なので、今回はWindowsのHDDの情報を情報を取得するコードをNimで書いていきます(ゴリ押し
コード
所管とか
Win32API。
古より蓄積されたWindowsでプログラムを動かすためのWindows用の関数群ですね。
これらを駆使してHDDの情報を取得します。
Windowsのドライブの種類。
これ、今はどうなってんだろ?
もっと増えてそう。
# ドライブの種類情報
const DRIVE_TYPE = [
"不明なディスク", "無効なパス", "リムーバブル", "固定ドライブ",
"リモートドライブ", "CD/DVDドライブ", "RAMディスク"
]
ぱく…参考にさせていただきました:https://ameblo.jp/sgl00044/entry-12539137844.html
for nDrive in 0..25: # ドライブは26個まで(A~Z)
これ、自信ないです。
まーでも、そういうことなんだろうなーと思って、こう認識しました。
ぱくっ…参考にさせていただきました:https://blog.goo.ne.jp/masaki_goo_2006/e/243664c01d35f678cffbc74345c530bc
var lpRootPathName = char(driveIdentifier) & ":\\\\"
# バックスラッシュ2つで1つのバックスラッシュになる(エスケープが必要だから)
これ、めんどいですよね。
Windowsで嫌いな部分です。
な~んでバックスラッシュにしたのかね。
# ドライブ識別名(ドライブタイプ): 利用可能容量 / 全体の容量
echo char(driveIdentifier) & "ドライブ(" & DRIVE_TYPE[driveTypeId] & "): " & $lpFreeBytesAvailableToCaller.QuadPart & " / " & $lpTotalNumberOfBytes.QuadPart
このへんは、
https://blog.goo.ne.jp/masaki_goo_2006/e/cc2488afb0b9cc958e755d50c60142a7
を参考にさせていただくといい感じになりそう(やってない)
こんな感じでしょうか。
Windowsの情報を取得するのって結構面倒ですね。
NimでWindowsのCPU使用率を求めたこともあるので、興味があればどうぞ
https://qiita.com/nnahito/items/adc9642c9b76347aa267