RegisterDeviceNotification

RegisterDeviceNotificationで、デバイス通知登録をする。

RegisterDeviceNotificationW 関数 (winuser.h) - Win32 apps | Microsoft Learn
デバイス通知の登録 - Win32 apps | Microsoft Learn

DBT_DEVTYP_VOLUMEは通知が来るが、それ以外のデバイスタイプでは、RegisterDeviceNotificationでデバイス通知登録しないと通知が来ない。
RDN.cppで、

RegisterDeviceNotificationで、GUID_DEVINTERFACE_USB_DEVICEにおけるDBT_DEVTYP_DEVICEINTERFACEの通知を受けるように登録する。
RegisterDeviceNotificationが成功すると、戻り値で通知ハンドルが返ってくる。

閉じる時に、UnregisterDeviceNotificationで通知ハンドルを解除する。

通知ハンドルが返された。
通知ハンドルが返された。

通知ハンドルが返された。

USBデバイスを挿すと、DBT_DEVICEARRIVALが2回来てる。
USBデバイスを挿すと、DBT_DEVICEARRIVALが2回来てる。

USBデバイスを挿すと、DBT_DEVICEARRIVALが2回来てる。

USBデバイスを取り出すと、DBT_DEVICEREMOVECOMPLETEが2回来てる。
USBデバイスを取り出すと、DBT_DEVICEREMOVECOMPLETEが2回来てる。

USBデバイスを取り出すと、DBT_DEVICEREMOVECOMPLETEが2回来てる。
DBT_DEVTYP_DEVICEINTERFACEの分が増えたからだ。

Sample/winapi/RegisterDeviceNotification/RDN/src/RDN at master · bg1bgst333/Sample · GitHub