SPDRP_PHYSICAL_DEVICE_OBJECT_NAMEで、物理デバイスオブジェクト名を取得。
SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn
これ、後で使うので、割と重要。
S_P_D_O_N.cppで、
とする。
"\Device~"から始まるパス
SPDRP_PHYSICAL_DEVICE_OBJECT_NAMEで、物理デバイスオブジェクト名を取得。
SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn
これ、後で使うので、割と重要。
S_P_D_O_N.cppで、
とする。
"\Device~"から始まるパス
SPDRP_DEVICEDESCで、デバイスの説明を取得。
SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn
SPDRP_DEVICEDESC.cppで、
とする。
コンソールだと文字化けするので、マルチバイトで出力。
Windows10だとボリューム。
(Windows7は汎用ボリューム。)
SPDRP_CLASSGUIDで、クラスGUIDを取得する。
SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn
SPDRP_CLASSGUID.cppで、
とする。
こうなる。
SetupDiGetDeviceRegistryPropertyの第3引数に、SPDRP_CLASSを指定して、クラス名を取得する。
SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn
SPDRP_CLASS.cppで、
とする。
サイズはバイト単位だが、取得した文字列はワイド文字列なので、BYTE配列をTCHAR配列として出力。
すべてVolume。
Sample/winapi/SPDRP_CLASS/SPDRP_CLASS/src/SPDRP_CLASS at master · bg1bgst333/Sample · GitHub
SetupDiGetDeviceRegistryPropertyで、指定のプロパティを取得する。
SetupDiGetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn
今回は、クラスプロパティのサイズだけ取得。
SDGDRP.cppで、
とすると、
こうなる。
サイズはバイト単位。
GUID_DEVINTERFACE_DISKは、定義済みのディスクデバイスインターフェースクラスGUID。
GUID_DEVINTERFACE_DISK - Windows drivers | Microsoft Learn
ディスクデバイス一覧を列挙する。
GUID_DEVINTERFACE_DISK.cppで、
こうすると、
メインのCドライブとUSBHDDのDドライブ。
GUID_DEVINTERFACE_VOLUMEは、定義済みのボリュームデバイスインターフェースクラスGUID。
https://learn.microsoft.com/en-us/windows-hardware/drivers/install/guid-devinterface-volume
ボリュームデバイス一覧を列挙する。
GUID_DEVINTERFACE_VOLUME.cppで、
こうすると、
こうなる。
ここに出てくるGUIDは、GUID_DEVINTERFACE_VOLUMEのようなインターフェースクラスGUIDではなくて、
System-Defined Device Setup Classes Available to Vendors - Windows drivers | Microsoft Learn
セットアップクラスGUIDというのらしい・・・。
("{71a27cdd~"で始まるStorage Volumesってやつ・・・。)
見えるドライブレターは3つなので、残り1つは謎だが・・・。