winapi_ui_automation/shared/
ifdef.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use shared::basetsd::{UINT16, UINT32, ULONG32, ULONG64};
7use shared::guiddef::GUID;
8use shared::ntdef::{BOOLEAN, UCHAR, ULONG, USHORT, WCHAR};
9pub type NET_IF_COMPARTMENT_ID = UINT32;
10pub type PNET_IF_COMPARTMENT_ID = *mut NET_IF_COMPARTMENT_ID;
11pub const NET_IF_COMPARTMENT_ID_UNSPECIFIED: NET_IF_COMPARTMENT_ID = 0;
12pub const NET_IF_COMPARTMENT_ID_PRIMARY: NET_IF_COMPARTMENT_ID = 1;
13pub type NET_IF_NETWORK_GUID = GUID;
14pub type PNET_IF_NETWORK_GUID = *mut NET_IF_NETWORK_GUID;
15ENUM!{enum NET_IF_OPER_STATUS {
16    NET_IF_OPER_STATUS_UP = 1,
17    NET_IF_OPER_STATUS_DOWN = 2,
18    NET_IF_OPER_STATUS_TESTING = 3,
19    NET_IF_OPER_STATUS_UNKNOWN = 4,
20    NET_IF_OPER_STATUS_DORMANT = 5,
21    NET_IF_OPER_STATUS_NOT_PRESENT = 6,
22    NET_IF_OPER_STATUS_LOWER_LAYER_DOWN = 7,
23}}
24pub type PNET_IF_OPER_STATUS = *mut NET_IF_OPER_STATUS;
25pub type NET_IF_OBJECT_ID = ULONG32;
26pub type PNET_IF_OBJECT_ID = *mut NET_IF_OBJECT_ID;
27ENUM!{enum NET_IF_ADMIN_STATUS {
28    NET_IF_ADMIN_STATUS_UP = 1,
29    NET_IF_ADMIN_STATUS_DOWN = 2,
30    NET_IF_ADMIN_STATUS_TESTING = 3,
31}}
32pub type PNET_IF_ADMIN_STATUS = *mut NET_IF_ADMIN_STATUS;
33pub type NET_IF_COMPARTMENT_SCOPE = UINT32;
34pub type PNET_IF_COMPARTMENT_SCOPE = *mut NET_IF_COMPARTMENT_SCOPE;
35pub const NET_IF_COMPARTMENT_SCOPE_UNSPECIFIED: NET_IF_COMPARTMENT_SCOPE = 0;
36pub const NET_IF_COMPARTMENT_SCOPE_ALL: NET_IF_COMPARTMENT_SCOPE = -1i32 as u32;
37ENUM!{enum NET_IF_RCV_ADDRESS_TYPE {
38    NET_IF_RCV_ADDRESS_TYPE_OTHER = 1,
39    NET_IF_RCV_ADDRESS_TYPE_VOLATILE = 2,
40    NET_IF_RCV_ADDRESS_TYPE_NON_VOLATILE = 3,
41}}
42pub type PNET_IF_RCV_ADDRESS_TYPE = *mut NET_IF_RCV_ADDRESS_TYPE;
43STRUCT!{struct NET_IF_RCV_ADDRESS_LH {
44    ifRcvAddressType: NET_IF_RCV_ADDRESS_TYPE,
45    ifRcvAddressLength: USHORT,
46    ifRcvAddressOffset: USHORT,
47}}
48pub type PNET_IF_RCV_ADDRESS_LH = *mut NET_IF_RCV_ADDRESS_LH;
49STRUCT!{struct NET_IF_ALIAS_LH {
50    ifAliasLength: USHORT,
51    ifAliasOffset: USHORT,
52}}
53pub type PNET_IF_ALIAS_LH = *mut NET_IF_ALIAS_LH;
54// FIXME: Switch to union version in 0.4
55// STRUCT!{struct NET_LUID_LH_Info {
56//     bitfield: ULONG64,
57// }}
58// BITFIELD!{NET_LUID_LH_Info bitfield: ULONG64 [
59//     Reserved set_Reserved[0..24],
60//     NetLuidIndex set_NetLuidIndex[24..48],
61//     IfType set_IfType[48..64],
62// ]}
63// UNION!{struct NET_LUID_LH {
64//     [u64; 1],
65//     Value Value_mut: ULONG64,
66//     Info Info_mut: NET_LUID_LH_Info,
67// }}
68STRUCT!{struct NET_LUID_LH {
69    Value: ULONG64,
70}}
71BITFIELD!{NET_LUID_LH Value: ULONG64 [
72    Reserved set_Reserved[0..24],
73    NetLuidIndex set_NetLuidIndex[24..48],
74    IfType set_IfType[48..64],
75]}
76pub type PNET_LUID_LH = *mut NET_LUID_LH;
77pub type NET_IF_RCV_ADDRESS = NET_IF_RCV_ADDRESS_LH;
78pub type PNET_IF_RCV_ADDRESS = *mut NET_IF_RCV_ADDRESS;
79pub type NET_IF_ALIAS = NET_IF_ALIAS_LH;
80pub type PNET_IF_ALIAS = *mut NET_IF_ALIAS;
81pub type NET_LUID = NET_LUID_LH;
82pub type PNET_LUID = *mut NET_LUID;
83pub type IF_LUID = NET_LUID;
84pub type PIF_LUID = *mut NET_LUID;
85pub type NET_IFINDEX = ULONG;
86pub type PNET_IFINDEX = *mut NET_IFINDEX;
87pub type NET_IFTYPE = UINT16;
88pub type PNET_IFTYPE = *mut NET_IFTYPE;
89pub type IF_INDEX = NET_IFINDEX;
90pub type PIF_INDEX = *mut NET_IFINDEX;
91ENUM!{enum NET_IF_CONNECTION_TYPE {
92    NET_IF_CONNECTION_DEDICATED = 1,
93    NET_IF_CONNECTION_PASSIVE = 2,
94    NET_IF_CONNECTION_DEMAND = 3,
95    NET_IF_CONNECTION_MAXIMUM = 4,
96}}
97pub type PNET_IF_CONNECTION_TYPE = *mut NET_IF_CONNECTION_TYPE;
98ENUM!{enum TUNNEL_TYPE {
99    TUNNEL_TYPE_NONE = 0,
100    TUNNEL_TYPE_OTHER = 1,
101    TUNNEL_TYPE_DIRECT = 2,
102    TUNNEL_TYPE_6TO4 = 11,
103    TUNNEL_TYPE_ISATAP = 13,
104    TUNNEL_TYPE_TEREDO = 14,
105    TUNNEL_TYPE_IPHTTPS = 15,
106}}
107pub type PTUNNEL_TYPE = *mut TUNNEL_TYPE;
108ENUM!{enum NET_IF_ACCESS_TYPE {
109    NET_IF_ACCESS_LOOPBACK = 1,
110    NET_IF_ACCESS_BROADCAST = 2,
111    NET_IF_ACCESS_POINT_TO_POINT = 3,
112    NET_IF_ACCESS_POINT_TO_MULTI_POINT = 4,
113    NET_IF_ACCESS_MAXIMUM = 5,
114}}
115pub type PNET_IF_ACCESS_TYPE = *mut NET_IF_ACCESS_TYPE;
116ENUM!{enum NET_IF_DIRECTION_TYPE {
117    NET_IF_DIRECTION_SENDRECEIVE,
118    NET_IF_DIRECTION_SENDONLY,
119    NET_IF_DIRECTION_RECEIVEONLY,
120    NET_IF_DIRECTION_MAXIMUM,
121}}
122pub type PNET_IF_DIRECTION_TYPE = *mut NET_IF_DIRECTION_TYPE;
123ENUM!{enum NET_IF_MEDIA_CONNECT_STATE {
124    MediaConnectStateUnknown,
125    MediaConnectStateConnected,
126    MediaConnectStateDisconnected,
127}}
128pub type PNET_IF_MEDIA_CONNECT_STATE = *mut NET_IF_MEDIA_CONNECT_STATE;
129ENUM!{enum NET_IF_MEDIA_DUPLEX_STATE {
130    MediaDuplexStateUnknown = 0,
131    MediaDuplexStateHalf = 1,
132    MediaDuplexStateFull = 2,
133}}
134pub type PNET_IF_MEDIA_DUPLEX_STATE = *mut NET_IF_MEDIA_DUPLEX_STATE;
135STRUCT!{struct NET_PHYSICAL_LOCATION_LH {
136    BusNumber: ULONG,
137    SlotNumber: ULONG,
138    FunctionNumber: ULONG,
139}}
140pub type PNET_PHYSICAL_LOCATION_LH = *mut NET_PHYSICAL_LOCATION_LH;
141pub const IF_MAX_STRING_SIZE: usize = 256;
142pub const IF_MAX_PHYS_ADDRESS_LENGTH: usize = 32;
143STRUCT!{struct IF_COUNTED_STRING_LH {
144    Length: USHORT,
145    String: [WCHAR; IF_MAX_STRING_SIZE + 1],
146}}
147pub type PIF_COUNTED_STRING_LH = *mut IF_COUNTED_STRING_LH;
148STRUCT!{struct IF_PHYSICAL_ADDRESS_LH {
149    Length: USHORT,
150    Address: [UCHAR; IF_MAX_PHYS_ADDRESS_LENGTH],
151}}
152pub type PIF_PHYSICAL_ADDRESS_LH = *mut IF_PHYSICAL_ADDRESS_LH;
153pub type NET_PHYSICAL_LOCATION = NET_PHYSICAL_LOCATION_LH;
154pub type PNET_PHYSICAL_LOCATION = *mut NET_PHYSICAL_LOCATION;
155pub type IF_COUNTED_STRING = IF_COUNTED_STRING_LH;
156pub type PIF_COUNTED_STRING = *mut IF_COUNTED_STRING;
157pub type IF_PHYSICAL_ADDRESS = IF_PHYSICAL_ADDRESS_LH;
158pub type PIF_PHYSICAL_ADDRESS = *mut IF_PHYSICAL_ADDRESS;
159ENUM!{enum IF_ADMINISTRATIVE_STATE {
160    IF_ADMINISTRATIVE_DISABLED = 0,
161    IF_ADMINISTRATIVE_ENABLED = 1,
162    IF_ADMINISTRATIVE_DEMANDDIAL = 2,
163}}
164pub type PIF_ADMINISTRATIVE_STATE = *mut IF_ADMINISTRATIVE_STATE;
165ENUM!{enum IF_OPER_STATUS {
166    IfOperStatusUp = 1,
167    IfOperStatusDown,
168    IfOperStatusTesting,
169    IfOperStatusUnknown,
170    IfOperStatusDormant,
171    IfOperStatusNotPresent,
172    IfOperStatusLowerLayerDown,
173}}
174STRUCT!{struct NDIS_INTERFACE_INFORMATION {
175    ifOperStatus: NET_IF_OPER_STATUS,
176    ifOperStatusFlags: ULONG,
177    MediaConnectState: NET_IF_MEDIA_CONNECT_STATE,
178    MediaDuplexState: NET_IF_MEDIA_DUPLEX_STATE,
179    ifMtu: ULONG,
180    ifPromiscuousMode: BOOLEAN,
181    ifDeviceWakeUpEnable: BOOLEAN,
182    XmitLinkSpeed: ULONG64,
183    RcvLinkSpeed: ULONG64,
184    ifLastChange: ULONG64,
185    ifCounterDiscontinuityTime: ULONG64,
186    ifInUnknownProtos: ULONG64,
187    ifInDiscards: ULONG64,
188    ifInErrors: ULONG64,
189    ifHCInOctets: ULONG64,
190    ifHCInUcastPkts: ULONG64,
191    ifHCInMulticastPkts: ULONG64,
192    ifHCInBroadcastPkts: ULONG64,
193    ifHCOutOctets: ULONG64,
194    ifHCOutUcastPkts: ULONG64,
195    ifHCOutMulticastPkts: ULONG64,
196    ifHCOutBroadcastPkts: ULONG64,
197    ifOutErrors: ULONG64,
198    ifOutDiscards: ULONG64,
199    ifHCInUcastOctets: ULONG64,
200    ifHCInMulticastOctets: ULONG64,
201    ifHCInBroadcastOctets: ULONG64,
202    ifHCOutUcastOctets: ULONG64,
203    ifHCOutMulticastOctets: ULONG64,
204    ifHCOutBroadcastOctets: ULONG64,
205    CompartmentId: NET_IF_COMPARTMENT_ID,
206    SupportedStatistics: ULONG,
207}}
208pub type PNDIS_INTERFACE_INFORMATION = *mut NDIS_INTERFACE_INFORMATION;