4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * dbt.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW Windows headers * 4e2933c620 2015-04-21 kinaba: * by Vladimir Vlasov * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ 4e2933c620 2015-04-21 kinaba: module win32.dbt; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: import win32.w32api, win32.windef; 4e2933c620 2015-04-21 kinaba: import win32.basetyps; // for GUID 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // FIXME: clean up Windows version support 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: DBT_NO_DISK_SPACE = 0x47, 4e2933c620 2015-04-21 kinaba: DBT_CONFIGMGPRIVATE = 0x7FFF, 4e2933c620 2015-04-21 kinaba: DBT_DEVICEARRIVAL = 0x8000, 4e2933c620 2015-04-21 kinaba: DBT_DEVICEQUERYREMOVE = 0x8001, 4e2933c620 2015-04-21 kinaba: DBT_DEVICEQUERYREMOVEFAILED = 0x8002, 4e2933c620 2015-04-21 kinaba: DBT_DEVICEREMOVEPENDING = 0x8003, 4e2933c620 2015-04-21 kinaba: DBT_DEVICEREMOVECOMPLETE = 0x8004, 4e2933c620 2015-04-21 kinaba: DBT_DEVICETYPESPECIFIC = 0x8005, 4e2933c620 2015-04-21 kinaba: DBT_DEVTYP_OEM = 0, 4e2933c620 2015-04-21 kinaba: DBT_DEVTYP_DEVNODE = 1, 4e2933c620 2015-04-21 kinaba: DBT_DEVTYP_VOLUME = 2, 4e2933c620 2015-04-21 kinaba: DBT_DEVTYP_PORT = 3, 4e2933c620 2015-04-21 kinaba: DBT_DEVTYP_NET = 4 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINDOWS >= 0x040A) { 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: DBT_DEVTYP_DEVICEINTERFACE = 5, 4e2933c620 2015-04-21 kinaba: DBT_DEVTYP_HANDLE = 6 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: DBT_APPYBEGIN, 4e2933c620 2015-04-21 kinaba: DBT_APPYEND, 4e2933c620 2015-04-21 kinaba: DBT_DEVNODES_CHANGED = 7, 4e2933c620 2015-04-21 kinaba: DBT_QUERYCHANGECONFIG = 0x17, 4e2933c620 2015-04-21 kinaba: DBT_CONFIGCHANGED = 0x18, 4e2933c620 2015-04-21 kinaba: DBT_CONFIGCHANGECANCELED = 0x19, 4e2933c620 2015-04-21 kinaba: DBT_MONITORCHANGE = 0x1B, 4e2933c620 2015-04-21 kinaba: DBT_SHELLLOGGEDON = 32, 4e2933c620 2015-04-21 kinaba: DBT_CONFIGMGAPI32 = 34, 4e2933c620 2015-04-21 kinaba: DBT_VXDINITCOMPLETE = 35, 4e2933c620 2015-04-21 kinaba: DBT_VOLLOCKQUERYLOCK = 0x8041, 4e2933c620 2015-04-21 kinaba: DBT_VOLLOCKLOCKTAKEN = 0x8042, 4e2933c620 2015-04-21 kinaba: DBT_VOLLOCKLOCKFAILED = 0x8043, 4e2933c620 2015-04-21 kinaba: DBT_VOLLOCKQUERYUNLOCK = 0x8044, 4e2933c620 2015-04-21 kinaba: DBT_VOLLOCKLOCKRELEASED = 0x8045, 4e2933c620 2015-04-21 kinaba: DBT_VOLLOCKUNLOCKFAILED = 0x8046, 4e2933c620 2015-04-21 kinaba: DBT_USERDEFINED = 0xFFFF 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : WORD { 4e2933c620 2015-04-21 kinaba: DBTF_MEDIA = 1, 4e2933c620 2015-04-21 kinaba: DBTF_NET = 2 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: BSM_ALLCOMPONENTS = 0, 4e2933c620 2015-04-21 kinaba: BSM_APPLICATIONS = 8, 4e2933c620 2015-04-21 kinaba: BSM_ALLDESKTOPS = 16, 4e2933c620 2015-04-21 kinaba: BSM_INSTALLABLEDRIVERS = 4, 4e2933c620 2015-04-21 kinaba: BSM_NETDRIVER = 2, 4e2933c620 2015-04-21 kinaba: BSM_VXDS = 1, 4e2933c620 2015-04-21 kinaba: BSF_FLUSHDISK = 0x00000004, 4e2933c620 2015-04-21 kinaba: BSF_FORCEIFHUNG = 0x00000020, 4e2933c620 2015-04-21 kinaba: BSF_IGNORECURRENTTASK = 0x00000002, 4e2933c620 2015-04-21 kinaba: BSF_NOHANG = 0x00000008, 4e2933c620 2015-04-21 kinaba: BSF_NOTIMEOUTIFNOTHUNG = 0x00000040, 4e2933c620 2015-04-21 kinaba: BSF_POSTMESSAGE = 0x00000010, 4e2933c620 2015-04-21 kinaba: BSF_QUERY = 0x00000001, 4e2933c620 2015-04-21 kinaba: BSF_MSGSRV32ISOK_BIT = 31, 4e2933c620 2015-04-21 kinaba: BSF_MSGSRV32ISOK = 0x80000000 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINNT >= 0x0500) { 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: BSF_ALLOWSFW = 0x00000080, 4e2933c620 2015-04-21 kinaba: BSF_SENDNOTIFYMESSAGE = 0x00000100 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINNT >= 0x0501) { 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: BSF_LUID = 0x00000400, 4e2933c620 2015-04-21 kinaba: BSF_RETURNHDESK = 0x00000200 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DEV_BROADCAST_HDR { 4e2933c620 2015-04-21 kinaba: DWORD dbch_size = DEV_BROADCAST_HDR.sizeof; 4e2933c620 2015-04-21 kinaba: DWORD dbch_devicetype; 4e2933c620 2015-04-21 kinaba: DWORD dbch_reserved; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_HDR* PDEV_BROADCAST_HDR; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DEV_BROADCAST_OEM { 4e2933c620 2015-04-21 kinaba: DWORD dbco_size = DEV_BROADCAST_OEM.sizeof; 4e2933c620 2015-04-21 kinaba: DWORD dbco_devicetype; 4e2933c620 2015-04-21 kinaba: DWORD dbco_reserved; 4e2933c620 2015-04-21 kinaba: DWORD dbco_identifier; 4e2933c620 2015-04-21 kinaba: DWORD dbco_suppfunc; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_OEM* PDEV_BROADCAST_OEM; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DEV_BROADCAST_PORT_A { 4e2933c620 2015-04-21 kinaba: DWORD dbcp_size = DEV_BROADCAST_PORT_A.sizeof; 4e2933c620 2015-04-21 kinaba: DWORD dbcp_devicetype; 4e2933c620 2015-04-21 kinaba: DWORD dbcp_reserved; 4e2933c620 2015-04-21 kinaba: char _dbcp_name; 4e2933c620 2015-04-21 kinaba: char* dbcp_name() { return &_dbcp_name; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_PORT_A* PDEV_BROADCAST_PORT_A; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DEV_BROADCAST_PORT_W { 4e2933c620 2015-04-21 kinaba: DWORD dbcp_size = DEV_BROADCAST_PORT_W.sizeof; 4e2933c620 2015-04-21 kinaba: DWORD dbcp_devicetype; 4e2933c620 2015-04-21 kinaba: DWORD dbcp_reserved; 4e2933c620 2015-04-21 kinaba: WCHAR _dbcp_name; 4e2933c620 2015-04-21 kinaba: WCHAR* dbcp_name() { return &_dbcp_name; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_PORT_W* PDEV_BROADCAST_PORT_W; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DEV_BROADCAST_USERDEFINED { 4e2933c620 2015-04-21 kinaba: DEV_BROADCAST_HDR dbud_dbh; 4e2933c620 2015-04-21 kinaba: char _dbud_szName; 4e2933c620 2015-04-21 kinaba: char* dbud_szName() { return &_dbud_szName; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DEV_BROADCAST_VOLUME { 4e2933c620 2015-04-21 kinaba: DWORD dbcv_size = DEV_BROADCAST_VOLUME.sizeof; 4e2933c620 2015-04-21 kinaba: DWORD dbcv_devicetype; 4e2933c620 2015-04-21 kinaba: DWORD dbcv_reserved; 4e2933c620 2015-04-21 kinaba: DWORD dbcv_unitmask; 4e2933c620 2015-04-21 kinaba: WORD dbcv_flags; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_VOLUME* PDEV_BROADCAST_VOLUME; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: version (Unicode) { 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT; 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if ((_WIN32_WINDOWS >= 0x0410) || (_WIN32_WINNT >= 0x0500)) { 4e2933c620 2015-04-21 kinaba: struct DEV_BROADCAST_DEVICEINTERFACE_A { 4e2933c620 2015-04-21 kinaba: DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_A.sizeof; 4e2933c620 2015-04-21 kinaba: DWORD dbcc_devicetype; 4e2933c620 2015-04-21 kinaba: DWORD dbcc_reserved; 4e2933c620 2015-04-21 kinaba: GUID dbcc_classguid; 4e2933c620 2015-04-21 kinaba: char _dbcc_name; 4e2933c620 2015-04-21 kinaba: char* dbcc_name() { return &_dbcc_name; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_DEVICEINTERFACE_A* PDEV_BROADCAST_DEVICEINTERFACE_A; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DEV_BROADCAST_DEVICEINTERFACE_W { 4e2933c620 2015-04-21 kinaba: DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_W.sizeof; 4e2933c620 2015-04-21 kinaba: DWORD dbcc_devicetype; 4e2933c620 2015-04-21 kinaba: DWORD dbcc_reserved; 4e2933c620 2015-04-21 kinaba: GUID dbcc_classguid; 4e2933c620 2015-04-21 kinaba: WCHAR _dbcc_name; 4e2933c620 2015-04-21 kinaba: WCHAR* dbcc_name() { return &_dbcc_name; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_DEVICEINTERFACE_W* PDEV_BROADCAST_DEVICEINTERFACE_W; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: version (Unicode) { 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE; 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_DEVICEINTERFACE* PDEV_BROADCAST_DEVICEINTERFACE; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DEV_BROADCAST_HANDLE { 4e2933c620 2015-04-21 kinaba: DWORD dbch_size = DEV_BROADCAST_HANDLE.sizeof; 4e2933c620 2015-04-21 kinaba: DWORD dbch_devicetype; 4e2933c620 2015-04-21 kinaba: DWORD dbch_reserved; 4e2933c620 2015-04-21 kinaba: HANDLE dbch_handle; 4e2933c620 2015-04-21 kinaba: DWORD dbch_hdevnotify; 4e2933c620 2015-04-21 kinaba: GUID dbch_eventguid; 4e2933c620 2015-04-21 kinaba: LONG dbch_nameoffset; 4e2933c620 2015-04-21 kinaba: BYTE _dbch_data; 4e2933c620 2015-04-21 kinaba: BYTE* dbch_data() { return &_dbch_data; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; 4e2933c620 2015-04-21 kinaba: }