public static IntPtr DoRegisterDeviceClassNotification(IntPtr hWnd, Guid devclass) { var mm = new MemPtr(); var bh = new DEV_BROADCAST_HDR(); var di = new DEV_BROADCAST_DEVICEINTERFACE(); bh.dbch_size = Marshal.SizeOf <DEV_BROADCAST_HDR>(); di.dbcc_size = Marshal.SizeOf <DEV_BROADCAST_DEVICEINTERFACE>(); bh.dbch_devicetype = DBT_DEVTYP_DEVICEINTERFACE; di.dbcc_classguid = devclass; mm.Alloc(bh.dbch_size + di.dbcc_size); mm.FromStruct(bh); mm.FromStructAt(bh.dbch_size, di); var ret = RegisterDeviceNotification(hWnd, mm, DEVICE_NOTIFY_WINDOW_HANDLE); mm.Free(); return(ret); }