a oe@srddlZddlZddlZddlZddlZddlZddlZddlZdZddZ ddZ e dkrne ej dddS) Nz&{A5DCBF10-6530-11D2-901F-00C04FB951ED}cCsTt|}td|t||tjkrP|jtjkrPtdt |j t |j dS)NzDevice change notification:z%Device being removed - closing handleT)win32gui_structZUnpackDEV_BROADCASTprintstrwin32conZDBT_DEVICEQUERYREMOVEZ devicetypeZDBT_DEVTYP_HANDLE win32fileZ CloseHandlehandlewin32guiZUnregisterDeviceNotificationZ hdevnotify)hwndmsgZwpZlpinfor BC:\Program Files\Certbot\pkgs\win32\Demos\win32gui_devicenotify.pyOnDeviceChanges    rc CsTt}d|_tjtjBtjB|_tjd|_ tj t i|_ t |}t|jdtjdddddddd }g}tt}t||tj}|||D]X}t|tjtjtjBtjBdtjtjtjBd}t |}t||tj}||qt!dt"|dt!d |s"t!d t!d t!d t#t$%d q"t&|t'|jddS)NZtest_devicenotifyzTesting some devicesdirZWatchingz'handles - press Ctrl+C to terminate, orz"add and remove some USB devices...z@(Note you can also pass paths to watch on the command-line - eg,z@pass the root of an inserted USB stick to see events specific toz that volume)g{Gz?)(rZWNDCLASSZ lpszClassNamerZCS_GLOBALCLASSZ CS_VREDRAWZ CS_HREDRAWZstyleZ COLOR_WINDOWZ hbrBackgroundZWM_DEVICECHANGErZ lpfnWndProcZ RegisterClassZ CreateWindowZ WS_CAPTIONrZ!PackDEV_BROADCAST_DEVICEINTERFACEGUID_DEVINTERFACE_USB_DEVICEZRegisterDeviceNotificationZDEVICE_NOTIFY_WINDOW_HANDLEappendrZ CreateFilewinntZFILE_LIST_DIRECTORYZFILE_SHARE_READZFILE_SHARE_WRITEZFILE_SHARE_DELETEZ OPEN_EXISTINGZFILE_FLAG_BACKUP_SEMANTICSZFILE_FLAG_OVERLAPPEDZPackDEV_BROADCAST_HANDLErlenZPumpWaitingMessagestimesleepZ DestroyWindowZUnregisterClass) Z dir_namesZwcZ class_atomr ZhdevsfilterZhdevdZhdirr r r TestDeviceNotifications&sl       r__main__r) sysrZwin32apirrrrrrrr__name__argvr r r r s@