SHChangeNotifyRegister

SHChangeNotifyRegisterで、ファイルシステムやシェルから通知を受けられる。

SHChangeNotifyRegister 関数 (shlobj_core.h) - Win32 apps | Microsoft Learn
C#でリムーバブルメディアの着脱を検知する方法 その2 - ohyajapanの日記

SHCNR.cppで、

独自のメッセージWM_SHNOTIFYを定義。

WM_CREATEで、SHChangeNotifyRegisterで、メディアの挿入と取り出しを監視するシェル通知登録で、ulNotificationIdを取得。

WM_DESTROYで、ulNotificationIdがあれば、SHChangeNotifyDeregisterで解除。

WM_SHNOTIFYに来れば、OutputDebugStringで、"WM_SHNOTIFY"と出力。

起動時の通知IDは1
起動時の通知IDは1

起動時の通知IDは1。

SDカードリーダにSDカードメディアを挿したら、通知WM_SHNOTIFYが来た。
SDカードリーダにSDカードメディアを挿したら、通知WM_SHNOTIFYが来た。

SDカードリーダにSDカードメディアを挿したら、通知WM_SHNOTIFYが来た。

Sample/winapi/SHChangeNotifyRegister/SHCNR/src/SHCNR at master · bg1bgst333/Sample · GitHub