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