dbt.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _DBT_H
  7. #define _DBT_H
  8. #include <_mingw_unicode.h>
  9. #define WM_DEVICECHANGE 0x0219
  10. #ifdef IS_32
  11. #define DBTFAR
  12. #else
  13. #define DBTFAR far
  14. #endif
  15. #ifndef _WCHAR_T_DEFINED
  16. #define _WCHAR_T_DEFINED
  17. typedef unsigned short wchar_t;
  18. #endif
  19. #include <guiddef.h>
  20. #define BSF_QUERY 0x00000001
  21. #define BSF_IGNORECURRENTTASK 0x00000002
  22. #define BSF_FLUSHDISK 0x00000004
  23. #define BSF_NOHANG 0x00000008
  24. #define BSF_POSTMESSAGE 0x00000010
  25. #define BSF_FORCEIFHUNG 0x00000020
  26. #define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
  27. #define BSF_MSGSRV32ISOK 0x80000000
  28. #define BSF_MSGSRV32ISOK_BIT 31
  29. #define BSM_ALLCOMPONENTS 0x00000000
  30. #define BSM_VXDS 0x00000001
  31. #define BSM_NETDRIVER 0x00000002
  32. #define BSM_INSTALLABLEDRIVERS 0x00000004
  33. #define BSM_APPLICATIONS 0x00000008
  34. #define DBT_APPYBEGIN 0x0000
  35. #define DBT_APPYEND 0x0001
  36. #define DBT_DEVNODES_CHANGED 0x0007
  37. #define DBT_QUERYCHANGECONFIG 0x0017
  38. #define DBT_CONFIGCHANGED 0x0018
  39. #define DBT_CONFIGCHANGECANCELED 0x0019
  40. #define DBT_MONITORCHANGE 0x001B
  41. #define DBT_SHELLLOGGEDON 0x0020
  42. #define DBT_CONFIGMGAPI32 0x0022
  43. #define DBT_VXDINITCOMPLETE 0x0023
  44. #define DBT_VOLLOCKQUERYLOCK 0x8041
  45. #define DBT_VOLLOCKLOCKTAKEN 0x8042
  46. #define DBT_VOLLOCKLOCKFAILED 0x8043
  47. #define DBT_VOLLOCKQUERYUNLOCK 0x8044
  48. #define DBT_VOLLOCKLOCKRELEASED 0x8045
  49. #define DBT_VOLLOCKUNLOCKFAILED 0x8046
  50. struct _DEV_BROADCAST_HDR {
  51. DWORD dbch_size;
  52. DWORD dbch_devicetype;
  53. DWORD dbch_reserved;
  54. };
  55. typedef struct _DEV_BROADCAST_HDR DEV_BROADCAST_HDR;
  56. typedef DEV_BROADCAST_HDR DBTFAR *PDEV_BROADCAST_HDR;
  57. typedef struct VolLockBroadcast VolLockBroadcast;
  58. typedef VolLockBroadcast *pVolLockBroadcast;
  59. struct VolLockBroadcast {
  60. struct _DEV_BROADCAST_HDR vlb_dbh;
  61. DWORD vlb_owner;
  62. BYTE vlb_perms;
  63. BYTE vlb_lockType;
  64. BYTE vlb_drive;
  65. BYTE vlb_flags;
  66. };
  67. #define LOCKP_ALLOW_WRITES 0x01
  68. #define LOCKP_FAIL_WRITES 0x00
  69. #define LOCKP_FAIL_MEM_MAPPING 0x02
  70. #define LOCKP_ALLOW_MEM_MAPPING 0x00
  71. #define LOCKP_USER_MASK 0x03
  72. #define LOCKP_LOCK_FOR_FORMAT 0x04
  73. #define LOCKF_LOGICAL_LOCK 0x00
  74. #define LOCKF_PHYSICAL_LOCK 0x01
  75. #define DBT_NO_DISK_SPACE 0x0047
  76. #define DBT_LOW_DISK_SPACE 0x0048
  77. #define DBT_CONFIGMGPRIVATE 0x7FFF
  78. #define DBT_DEVICEARRIVAL 0x8000
  79. #define DBT_DEVICEQUERYREMOVE 0x8001
  80. #define DBT_DEVICEQUERYREMOVEFAILED 0x8002
  81. #define DBT_DEVICEREMOVEPENDING 0x8003
  82. #define DBT_DEVICEREMOVECOMPLETE 0x8004
  83. #define DBT_DEVICETYPESPECIFIC 0x8005
  84. #define DBT_CUSTOMEVENT 0x8006
  85. #define DBT_DEVTYP_OEM 0x00000000
  86. #define DBT_DEVTYP_DEVNODE 0x00000001
  87. #define DBT_DEVTYP_VOLUME 0x00000002
  88. #define DBT_DEVTYP_PORT 0x00000003
  89. #define DBT_DEVTYP_NET 0x00000004
  90. #define DBT_DEVTYP_DEVICEINTERFACE 0x00000005
  91. #define DBT_DEVTYP_HANDLE 0x00000006
  92. struct _DEV_BROADCAST_HEADER {
  93. DWORD dbcd_size;
  94. DWORD dbcd_devicetype;
  95. DWORD dbcd_reserved;
  96. };
  97. struct _DEV_BROADCAST_OEM {
  98. DWORD dbco_size;
  99. DWORD dbco_devicetype;
  100. DWORD dbco_reserved;
  101. DWORD dbco_identifier;
  102. DWORD dbco_suppfunc;
  103. };
  104. typedef struct _DEV_BROADCAST_OEM DEV_BROADCAST_OEM;
  105. typedef DEV_BROADCAST_OEM DBTFAR *PDEV_BROADCAST_OEM;
  106. struct _DEV_BROADCAST_DEVNODE {
  107. DWORD dbcd_size;
  108. DWORD dbcd_devicetype;
  109. DWORD dbcd_reserved;
  110. DWORD dbcd_devnode;
  111. };
  112. typedef struct _DEV_BROADCAST_DEVNODE DEV_BROADCAST_DEVNODE;
  113. typedef DEV_BROADCAST_DEVNODE DBTFAR *PDEV_BROADCAST_DEVNODE;
  114. struct _DEV_BROADCAST_VOLUME {
  115. DWORD dbcv_size;
  116. DWORD dbcv_devicetype;
  117. DWORD dbcv_reserved;
  118. DWORD dbcv_unitmask;
  119. WORD dbcv_flags;
  120. };
  121. typedef struct _DEV_BROADCAST_VOLUME DEV_BROADCAST_VOLUME;
  122. typedef DEV_BROADCAST_VOLUME DBTFAR *PDEV_BROADCAST_VOLUME;
  123. #define DBTF_MEDIA 0x0001
  124. #define DBTF_NET 0x0002
  125. typedef struct _DEV_BROADCAST_PORT_A {
  126. DWORD dbcp_size;
  127. DWORD dbcp_devicetype;
  128. DWORD dbcp_reserved;
  129. char dbcp_name[1];
  130. } DEV_BROADCAST_PORT_A,*PDEV_BROADCAST_PORT_A;
  131. typedef struct _DEV_BROADCAST_PORT_W {
  132. DWORD dbcp_size;
  133. DWORD dbcp_devicetype;
  134. DWORD dbcp_reserved;
  135. wchar_t dbcp_name[1];
  136. } DEV_BROADCAST_PORT_W,DBTFAR *PDEV_BROADCAST_PORT_W;
  137. __MINGW_TYPEDEF_UAW(DEV_BROADCAST_PORT)
  138. __MINGW_TYPEDEF_UAW(PDEV_BROADCAST_PORT)
  139. struct _DEV_BROADCAST_NET {
  140. DWORD dbcn_size;
  141. DWORD dbcn_devicetype;
  142. DWORD dbcn_reserved;
  143. DWORD dbcn_resource;
  144. DWORD dbcn_flags;
  145. };
  146. typedef struct _DEV_BROADCAST_NET DEV_BROADCAST_NET;
  147. typedef DEV_BROADCAST_NET DBTFAR *PDEV_BROADCAST_NET;
  148. typedef struct _DEV_BROADCAST_DEVICEINTERFACE_A {
  149. DWORD dbcc_size;
  150. DWORD dbcc_devicetype;
  151. DWORD dbcc_reserved;
  152. GUID dbcc_classguid;
  153. char dbcc_name[1];
  154. } DEV_BROADCAST_DEVICEINTERFACE_A,*PDEV_BROADCAST_DEVICEINTERFACE_A;
  155. typedef struct _DEV_BROADCAST_DEVICEINTERFACE_W {
  156. DWORD dbcc_size;
  157. DWORD dbcc_devicetype;
  158. DWORD dbcc_reserved;
  159. GUID dbcc_classguid;
  160. wchar_t dbcc_name[1];
  161. } DEV_BROADCAST_DEVICEINTERFACE_W,*PDEV_BROADCAST_DEVICEINTERFACE_W;
  162. __MINGW_TYPEDEF_UAW(DEV_BROADCAST_DEVICEINTERFACE)
  163. __MINGW_TYPEDEF_UAW(PDEV_BROADCAST_DEVICEINTERFACE)
  164. typedef struct _DEV_BROADCAST_HANDLE {
  165. DWORD dbch_size;
  166. DWORD dbch_devicetype;
  167. DWORD dbch_reserved;
  168. HANDLE dbch_handle;
  169. HDEVNOTIFY dbch_hdevnotify;
  170. GUID dbch_eventguid;
  171. LONG dbch_nameoffset;
  172. BYTE dbch_data[1];
  173. } DEV_BROADCAST_HANDLE,*PDEV_BROADCAST_HANDLE;
  174. typedef struct _DEV_BROADCAST_HANDLE32 {
  175. DWORD dbch_size;
  176. DWORD dbch_devicetype;
  177. DWORD dbch_reserved;
  178. ULONG32 dbch_handle;
  179. ULONG32 dbch_hdevnotify;
  180. GUID dbch_eventguid;
  181. LONG dbch_nameoffset;
  182. BYTE dbch_data[1];
  183. } DEV_BROADCAST_HANDLE32,*PDEV_BROADCAST_HANDLE32;
  184. typedef struct _DEV_BROADCAST_HANDLE64 {
  185. DWORD dbch_size;
  186. DWORD dbch_devicetype;
  187. DWORD dbch_reserved;
  188. ULONG64 dbch_handle;
  189. ULONG64 dbch_hdevnotify;
  190. GUID dbch_eventguid;
  191. LONG dbch_nameoffset;
  192. BYTE dbch_data[1];
  193. } DEV_BROADCAST_HANDLE64,*PDEV_BROADCAST_HANDLE64;
  194. #define DBTF_RESOURCE 0x00000001
  195. #define DBTF_XPORT 0x00000002
  196. #define DBTF_SLOWNET 0x00000004
  197. #define DBT_VPOWERDAPI 0x8100
  198. #define DBT_USERDEFINED 0xFFFF
  199. struct _DEV_BROADCAST_USERDEFINED {
  200. struct _DEV_BROADCAST_HDR dbud_dbh;
  201. char dbud_szName[1];
  202. };
  203. #endif