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。

SDカードリーダにSDカードメディアを挿したら、通知WM_SHNOTIFYが来た。
Sample/winapi/SHChangeNotifyRegister/SHCNR/src/SHCNR at master · bg1bgst333/Sample · GitHub