SPDRP_PHYSICAL_DEVICE_OBJECT_NAME

SPDRP_PHYSICAL_DEVICE_OBJECT_NAMEで、物理デバイスオブジェクト名を取得。

SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn

これ、後で使うので、割と重要。
S_P_D_O_N.cppで、

とする。

"\Device~"から始まるパス
"\Device~"から始まるパス

"\Device~"から始まるパス

Sample/winapi/SPDRP_PHYSICAL_DEVICE_OBJECT_NAME/S_P_D_O_N/src/S_P_D_O_N at master · bg1bgst333/Sample · GitHub

SPDRP_DEVICEDESC

SPDRP_DEVICEDESCで、デバイスの説明を取得。

SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn

SPDRP_DEVICEDESC.cppで、

とする。
コンソールだと文字化けするので、マルチバイトで出力。

Windows10だとボリューム
Windows10だとボリューム

Windows10だとボリューム。
(Windows7は汎用ボリューム。)

Sample/winapi/SPDRP_DEVICEDESC/SPDRP_DEVICEDESC/src/SPDRP_DEVICEDESC at master · bg1bgst333/Sample · GitHub

SPDRP_CLASS

SetupDiGetDeviceRegistryPropertyの第3引数に、SPDRP_CLASSを指定して、クラス名を取得する。

SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn

SPDRP_CLASS.cppで、

とする。
サイズはバイト単位だが、取得した文字列はワイド文字列なので、BYTE配列をTCHAR配列として出力。

すべてVolume
すべてVolume

すべてVolume。

Sample/winapi/SPDRP_CLASS/SPDRP_CLASS/src/SPDRP_CLASS at master · bg1bgst333/Sample · GitHub

SetupDiGetDeviceRegistryProperty

SetupDiGetDeviceRegistryPropertyで、指定のプロパティを取得する。

SetupDiGetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn

今回は、クラスプロパティのサイズだけ取得。
SDGDRP.cppで、

とすると、

こうなる。
こうなる。

こうなる。
サイズはバイト単位。

Sample/winapi/SetupDiGetDeviceRegistryProperty/SDGDRP/src/SDGDRP at master · bg1bgst333/Sample · GitHub

GUID_DEVINTERFACE_DISK

GUID_DEVINTERFACE_DISKは、定義済みのディスクデバイスインターフェースクラスGUID。

GUID_DEVINTERFACE_DISK - Windows drivers | Microsoft Learn

ディスクデバイス一覧を列挙する。
GUID_DEVINTERFACE_DISK.cppで、

こうすると、

メインのCドライブとUSBHDDのDドライブ
メインのCドライブとUSBHDDのDドライブ

メインのCドライブとUSBHDDのDドライブ。

Sample/winapi/GUID_DEVINTERFACE_DISK/GUID_DEVINTERFACE_DISK/src/GUID_DEVINTERFACE_DISK at master · bg1bgst333/Sample · GitHub

GUID_DEVINTERFACE_VOLUME

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つは謎だが・・・。

Sample/winapi/GUID_DEVINTERFACE_VOLUME/GUID_DEVINTERFACE_VOLUME/src/GUID_DEVINTERFACE_VOLUME at master · bg1bgst333/Sample · GitHub