WindowsAPI

SHChangeNotifyRegister

SHChangeNotifyRegisterで、ファイルシステムやシェルから通知を受けられる。SHChangeNotifyRegister 関数 (shlobj_core.h) - Win32 apps | Microsoft Learn C#でリムーバブルメディアの着脱を検知する方法 その2 - ohyajapanの日記SHCNR.cppで、独自のメッ…

DBT_CUSTOMEVENT

DBT_CUSTOMEVENTは、ドライバー定義のカスタム イベントが発生したときに、来るらしい。DBT_CUSTOMEVENT イベント (Dbt.h) - Win32 apps | Microsoft Learn具体的には、例えばUSB接続のSDカードリーダーで起きる模様。 DBT_CUSTOMEVENT.cppで、ディレクトリ…

DBT_DEVICEREMOVEPENDING

DBT_DEVICEREMOVEPENDINGは、デバイス削除中に来る。DBT_DEVICEREMOVEPENDING イベント (Dbt.h) - Win32 apps | Microsoft Learn デバイスを削除する要求の処理 - Win32 apps | Microsoft Learnここでも、ディレクトリハンドルを閉じるように書いてあるが、…

DBT_DEVICEQUERYREMOVEFAILED

DBT_DEVICEQUERYREMOVEというデバイス削除要求に対し、失敗した時にDBT_DEVICEQUERYREMOVEFAILEDに来る。DBT_DEVICEQUERYREMOVEFAILED event (Dbt.h) - Win32 apps | Microsoft Learnここに来た時は、デバイスを削除する要求の処理 - Win32 apps | Microsoft…

DBT_DEVICEQUERYREMOVE

DBT_DEVICEQUERYREMOVEは、RegisterDeviceNotificationによるデバイス通知登録済みで、デバイス削除の要求が来た時に発生する。DBT_DEVICEQUERYREMOVE イベント (Dbt.h) - Win32 apps | Microsoft Learn デバイスを削除する要求の処理 - Win32 apps | Micros…

DEV_BROADCAST_HANDLE

dbch_devicetypeが、DBT_DEVTYP_HANDLEの時、DEV_BROADCAST_HDRポインタをDEV_BROADCAST_HANDLEポインタにキャストできる。DEV_BROADCAST_HANDLE (dbt.h) - Win32 apps | Microsoft Learn デバイスを削除する要求の処理 - Win32 apps | Microsoft Learnこれ…

DEV_BROADCAST_DEVICEINTERFACE

dbch_devicetypeが、DBT_DEVTYP_DEVICEINTERFACEなら、DEV_BROADCAST_HDRポインタをDEV_BROADCAST_DEVICEINTERFACEポインタにキャストできる。DEV_BROADCAST_DEVICEINTERFACE_W (dbt.h) - Win32 apps | Microsoft LearnRegisterDeviceNotificationで、DEV_BR…

RegisterDeviceNotification

RegisterDeviceNotificationで、デバイス通知登録をする。RegisterDeviceNotificationW 関数 (winuser.h) - Win32 apps | Microsoft Learn デバイス通知の登録 - Win32 apps | Microsoft LearnDBT_DEVTYP_VOLUMEは通知が来るが、それ以外のデバイスタイプで…

SetupDiGetDeviceInstanceId

デバイスIDは、SetupDiGetDeviceInstanceIdでも取得出来る。SetupDiGetDeviceInstanceIdW 関数 (setupapi.h) - Win32 apps | Microsoft Learn VC++でシリアルポートの情報を取得:眠戌の手記:SSブログSDGDII.cppで、SetupDiGetDeviceInstanceIdでバッファサ…

SPDRP_SERVICE

SPDRP_SERVICEで、サービス名を取得。SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn USBメモリの安全な取り外し: 相談天国サービス名が"USBSTOR"なら、USBHDDでありUSBデバイスであると言える。 SPDRP_SERVICE.cppで…

CM_Get_Device_ID_List

CM_Get_Device_ID_Listで、特定のデバイスインスタンスID一覧を取得する。CM_Get_Device_ID_ListW関数 (cfgmgr32.h) - Win32 apps | Microsoft Learn USBドライブのVID/PIDを調べる方法について バグのある生活: Windows上でのUSBメモリとドライブの関係につ…

CM_Get_Device_ID_List_Size

CM_Get_Device_ID_List_Sizeで、特定のデバイスインスタンスID一覧のサイズを取得する。CM_Get_Device_ID_List_SizeW関数 (cfgmgr32.h) - Win32 apps | Microsoft Learn USBドライブのVID/PIDを調べる方法について バグのある生活: Windows上でのUSBメモリと…

CM_Get_Device_Interface_List

CM_Get_Device_Interface_Listで、デバイスインターフェースインスタンス一覧を取得する。CM_Get_Device_Interface_ListW関数 (cfgmgr32.h) - Win32 apps | Microsoft Learn USBドライブのVID/PIDを調べる方法について"デバイスインターフェースインスタンス…

CM_Get_Device_Interface_List_Size

CM_Get_Device_Interface_List_Sizeで、CM_Get_Device_Interface_Listに渡すバッファサイズを取得する。CM_Get_Device_Interface_List_SizeW関数 (cfgmgr32.h) - Win32 apps | Microsoft Learn USBドライブのVID/PIDを調べる方法についてC_G_D_I_L_S.cppで、…

CM_Get_DevNode_Status

CM_Get_DevNode_Statusで、デバイスの状態などを取得する。CM_Get_DevNode_Status関数 (cfgmgr32.h) - Win32 apps | Microsoft Learn無効化可能かつ取り外し可能なら、リムーバブルデバイス。 CM_Get_DevNode_Status.cppで、こう書く。 真ん中だけがリムーバ…

CM_Get_Device_ID

CM_Get_Device_IDで、指定のDevInstのデバイスのデバイスIDを取得する。CM_Get_Device_IDW関数 (cfgmgr32.h) - Win32 apps | Microsoft LearnCM_Get_Device_ID.cppで、CM_Get_Device_ID_Sizeで得られたulBufLenには、文字列終端のNULL文字分は含まれていない…

CM_Get_Device_ID_Size

CM_Get_Device_ID_Sizeは、指定のDevInstのデバイスのデバイスIDを格納するためのバッファサイズを取得する。CM_Get_Device_ID_Size関数 (cfgmgr32.h) - Win32 apps | Microsoft LearnCM_Get_Device_ID_Size.cppで、SetupDiGetDeviceInterfaceDetailで、SP_D…

GUID_DEVINTERFACE_USB_DEVICE

GUID_DEVINTERFACE_USB_DEVICEは、定義済みのUSBデバイスインターフェースクラスGUID。GUID_DEVINTERFACE_USB_DEVICE - Windows drivers | Microsoft LearnVolume、Disk、そしてUSBデバイスにおけるデバイスパスを列挙する。 VisualStudio2015で、GUID_DEVIN…

CM_DRP_CLASS

CM_Get_DevNode_Registry_Propertyの第2引数に、CM_DRP_CLASSを指定し、クラス名を取得する。デバイス インスタンスのプロパティへのアクセス (Vista Windows前) - Windows drivers | Microsoft LearnCM_DRP_CLASS.cppで、iDiskDevInstの親のDevInstであるdw…

CM_Get_Sibling

CM_Get_Siblingで、兄弟デバイスのDevInstを取得する。CM_Get_Sibling関数 (cfgmgr32.h) - Win32 apps | Microsoft Learn ドライブ名からデバイス情報を取得する(DEVINST系)(UsefullCode.net)CM_Get_Childに加えて、CM_Get_Siblingや、CM_Get_Parentを使う…

CM_Get_Child

CM_Get_Childで、子のデバイスのDevInstを取得する。CM_Get_Child関数 (cfgmgr32.h) - Win32 apps | Microsoft Learn ドライブ名からデバイス情報を取得する(DEVINST系)(UsefullCode.net)ドライブレターから、物理デバイスオブジェクト名を経由して、DevIn…

CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME

CM_Get_DevNode_Registry_Propertyの第2引数に、CM_DRP_PHYSICAL_DEVICE_OBJECT_NAMEを指定すると、物理デバイスオブジェクト名を取得できる。デバイス インスタンスのプロパティへのアクセス (Vista Windows前) - Windows drivers | Microsoft LearnC_D_P_D…

CM_Get_DevNode_Registry_Property

CM_Get_DevNode_Registry_Propertyで、指定のDEVINSTのデバイスのプロパティをレジストリから取得する。CM_Get_DevNode_Registry_PropertyW関数 (cfgmgr32.h) - Win32 apps | Microsoft LearnC_G_D_R_P.cppで、と書く。 今回は、CM_DRP_CLASSを指定し、クラ…

CM_Locate_DevNode

CM_Locate_DevNodeで、指定のデバイスインスタンスパスのDEVINSTを取得する。CM_Locate_DevNodeW関数 (cfgmgr32.h) - Win32 apps | Microsoft Learn ドライブ名からデバイス情報を取得する(DEVINST系)(UsefullCode.net)CM_Locate_DevNode.cppで、と書く。 …

CM_Request_Device_Eject

CM_Request_Device_Ejectで、指定のDevInstのデバイスを取り出す。CM_Request_Device_EjectW関数 (cfgmgr32.h) - Win32 apps | Microsoft LearnCM_Request_Device_Eject.cppで、と書く。 USBHDDのDドライブを取り出すUSBHDDのDドライブを取り出す。 成功らし…

CM_Get_Parent

CM_Get_Parentは、指定のデバイスのDevInstから、親のデバイスのDevInstを取得する。CM_Get_Parent関数 (cfgmgr32.h) - Win32 apps | Microsoft Learnこれを使う前に、これまでのAPIなどを使って、いくつか関数を作る。 まず、ドライブレターからボリューム…

QueryDosDevice

QueryDosDeviceで、MS-DOSデバイス名を取得する。QueryDosDeviceW 関数 (fileapi.h) - Win32 apps | Microsoft LearnQueryDosDevice.cppで、こう書く。 各ドライブレターのMS-DOSデバイス名各ドライブレターのMS-DOSデバイス名。 よくみたら、"\Device~"で始…

GetDriveType

GetDriveTypeで、ドライブタイプを判定する。GetDriveTypeW 関数 (fileapi.h) - Win32 apps | Microsoft Learn GetDriveTypeGetDriveType.cppで、コマンドライン引数のドライブレターに、":\\"(表示時は":\".)を連結し、GetDriveTypeに渡すと、ドライブタイ…

SPDRP_PHYSICAL_DEVICE_OBJECT_NAME

SPDRP_PHYSICAL_DEVICE_OBJECT_NAMEで、物理デバイスオブジェクト名を取得。SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learnこれ、後で使うので、割と重要。 S_P_D_O_N.cppで、とする。 "\Device~"から始まるパス"\Dev…

SPDRP_DEVICEDESC

SPDRP_DEVICEDESCで、デバイスの説明を取得。SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft LearnSPDRP_DEVICEDESC.cppで、とする。 コンソールだと文字化けするので、マルチバイトで出力。 Windows10だとボリュームWindow…