3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NimAdvent Calendar 2020

Day 9

NimでWindowsのHDD(SSD)の容量とかを取得してみる

Last updated at Posted at 2020-12-09

はじめに

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

3
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?