Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3005 lines
105 KiB

  1. /*++ BUILD Version: 0001 // Increment this if a change has global effects
  2. Copyright (c) Microsoft Corporation. All rights reserved.
  3. Module Name:
  4. ntddndis.h
  5. Abstract:
  6. This is the include file that defines all constants and types for
  7. accessing the Network driver interface device.
  8. Author:
  9. NDIS/ATM Development Team
  10. Revision History:
  11. added the correct values for NDIS 3.0.
  12. added Pnp IoCTLs and structures
  13. added general co ndis oids.
  14. added PnP and PM OIDs.
  15. --*/
  16. #ifndef _NTDDNDIS_
  17. #define _NTDDNDIS_
  18. #if _MSC_VER > 1000
  19. #pragma once
  20. #endif
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. //
  25. // Device Name - this string is the name of the device. It is the name
  26. // that should be passed to NtOpenFile when accessing the device.
  27. //
  28. // Note: For devices that support multiple units, it should be suffixed
  29. // with the Ascii representation of the unit number.
  30. //
  31. #define DD_NDIS_DEVICE_NAME "\\Device\\UNKNOWN"
  32. //
  33. // NtDeviceIoControlFile IoControlCode values for this device.
  34. //
  35. // Warning: Remember that the low two bits of the code specify how the
  36. // buffers are passed to the driver!
  37. //
  38. #define _NDIS_CONTROL_CODE(request,method) \
  39. CTL_CODE(FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS)
  40. #define IOCTL_NDIS_QUERY_GLOBAL_STATS _NDIS_CONTROL_CODE(0, METHOD_OUT_DIRECT)
  41. #define IOCTL_NDIS_QUERY_ALL_STATS _NDIS_CONTROL_CODE(1, METHOD_OUT_DIRECT)
  42. #define IOCTL_NDIS_DO_PNP_OPERATION _NDIS_CONTROL_CODE(2, METHOD_BUFFERED)
  43. #define IOCTL_NDIS_QUERY_SELECTED_STATS _NDIS_CONTROL_CODE(3, METHOD_OUT_DIRECT)
  44. #define IOCTL_NDIS_ENUMERATE_INTERFACES _NDIS_CONTROL_CODE(4, METHOD_BUFFERED)
  45. #define IOCTL_NDIS_ADD_TDI_DEVICE _NDIS_CONTROL_CODE(5, METHOD_BUFFERED)
  46. #define IOCTL_NDIS_GET_LOG_DATA _NDIS_CONTROL_CODE(7, METHOD_OUT_DIRECT)
  47. #define IOCTL_NDIS_GET_VERSION _NDIS_CONTROL_CODE(8, METHOD_OUT_DIRECT)
  48. //
  49. // NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for
  50. // this device.
  51. //
  52. //
  53. // This is the type of an NDIS OID value.
  54. //
  55. typedef ULONG NDIS_OID, *PNDIS_OID;
  56. //
  57. // IOCTL_NDIS_QUERY_ALL_STATS returns a sequence of these, packed
  58. // together. This structure is unaligned because not all statistics
  59. // have a length that is a ULONG multiple.
  60. //
  61. typedef UNALIGNED struct _NDIS_STATISTICS_VALUE
  62. {
  63. NDIS_OID Oid;
  64. ULONG DataLength;
  65. UCHAR Data[1]; // variable length
  66. } NDIS_STATISTICS_VALUE, *PNDIS_STATISTICS_VALUE;
  67. //
  68. // Structure used to define a self-contained variable data structure
  69. //
  70. typedef struct _NDIS_VAR_DATA_DESC
  71. {
  72. USHORT Length; // # of octects of data
  73. USHORT MaximumLength; // # of octects available
  74. ULONG_PTR Offset; // Offset of data relative to the descriptor
  75. } NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
  76. #ifndef GUID_DEFINED
  77. #include <guiddef.h>
  78. #endif // !GUID_DEFINED
  79. //
  80. // General Objects
  81. //
  82. //
  83. // Required OIDs
  84. //
  85. #define OID_GEN_SUPPORTED_LIST 0x00010101
  86. #define OID_GEN_HARDWARE_STATUS 0x00010102
  87. #define OID_GEN_MEDIA_SUPPORTED 0x00010103
  88. #define OID_GEN_MEDIA_IN_USE 0x00010104
  89. #define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
  90. #define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
  91. #define OID_GEN_LINK_SPEED 0x00010107
  92. #define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
  93. #define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
  94. #define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010A
  95. #define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010B
  96. #define OID_GEN_VENDOR_ID 0x0001010C
  97. #define OID_GEN_VENDOR_DESCRIPTION 0x0001010D
  98. #define OID_GEN_CURRENT_PACKET_FILTER 0x0001010E
  99. #define OID_GEN_CURRENT_LOOKAHEAD 0x0001010F
  100. #define OID_GEN_DRIVER_VERSION 0x00010110
  101. #define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
  102. #define OID_GEN_PROTOCOL_OPTIONS 0x00010112
  103. #define OID_GEN_MAC_OPTIONS 0x00010113
  104. #define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
  105. #define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
  106. #define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
  107. #define OID_GEN_SUPPORTED_GUIDS 0x00010117
  108. #define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118 // Set only
  109. #define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119 // Set only
  110. #define OID_GEN_MACHINE_NAME 0x0001021A
  111. #define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021B // Set only
  112. #define OID_GEN_VLAN_ID 0x0001021C
  113. //
  114. // Optional OIDs
  115. //
  116. #define OID_GEN_MEDIA_CAPABILITIES 0x00010201
  117. #define OID_GEN_PHYSICAL_MEDIUM 0x00010202
  118. //
  119. // Required statistics
  120. //
  121. #define OID_GEN_XMIT_OK 0x00020101
  122. #define OID_GEN_RCV_OK 0x00020102
  123. #define OID_GEN_XMIT_ERROR 0x00020103
  124. #define OID_GEN_RCV_ERROR 0x00020104
  125. #define OID_GEN_RCV_NO_BUFFER 0x00020105
  126. //
  127. // Optional statistics
  128. //
  129. #define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
  130. #define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
  131. #define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
  132. #define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
  133. #define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
  134. #define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
  135. #define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
  136. #define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
  137. #define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
  138. #define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020A
  139. #define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B
  140. #define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020C
  141. #define OID_GEN_RCV_CRC_ERROR 0x0002020D
  142. #define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020E
  143. #define OID_GEN_GET_TIME_CAPS 0x0002020F
  144. #define OID_GEN_GET_NETCARD_TIME 0x00020210
  145. #define OID_GEN_NETCARD_LOAD 0x00020211
  146. #define OID_GEN_DEVICE_PROFILE 0x00020212
  147. //
  148. // The following is exported by NDIS itself and is only queryable. It returns
  149. // the time in milliseconds a driver took to initialize.
  150. //
  151. #define OID_GEN_INIT_TIME_MS 0x00020213
  152. #define OID_GEN_RESET_COUNTS 0x00020214
  153. #define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215
  154. #define OID_GEN_FRIENDLY_NAME 0x00020216
  155. #define OID_GEN_MINIPORT_INFO 0x00020217
  156. #define OID_GEN_RESET_VERIFY_PARAMETERS 0x00020218
  157. //
  158. // These are connection-oriented general OIDs.
  159. // These replace the above OIDs for connection-oriented media.
  160. //
  161. #define OID_GEN_CO_SUPPORTED_LIST OID_GEN_SUPPORTED_LIST
  162. #define OID_GEN_CO_HARDWARE_STATUS OID_GEN_HARDWARE_STATUS
  163. #define OID_GEN_CO_MEDIA_SUPPORTED OID_GEN_MEDIA_SUPPORTED
  164. #define OID_GEN_CO_MEDIA_IN_USE OID_GEN_MEDIA_IN_USE
  165. #define OID_GEN_CO_LINK_SPEED OID_GEN_LINK_SPEED
  166. #define OID_GEN_CO_VENDOR_ID OID_GEN_VENDOR_ID
  167. #define OID_GEN_CO_VENDOR_DESCRIPTION OID_GEN_VENDOR_DESCRIPTION
  168. #define OID_GEN_CO_DRIVER_VERSION OID_GEN_DRIVER_VERSION
  169. #define OID_GEN_CO_PROTOCOL_OPTIONS OID_GEN_PROTOCOL_OPTIONS
  170. #define OID_GEN_CO_MAC_OPTIONS OID_GEN_MAC_OPTIONS
  171. #define OID_GEN_CO_MEDIA_CONNECT_STATUS OID_GEN_MEDIA_CONNECT_STATUS
  172. #define OID_GEN_CO_VENDOR_DRIVER_VERSION OID_GEN_VENDOR_DRIVER_VERSION
  173. #define OID_GEN_CO_SUPPORTED_GUIDS OID_GEN_SUPPORTED_GUIDS
  174. #define OID_GEN_CO_GET_TIME_CAPS OID_GEN_GET_TIME_CAPS
  175. #define OID_GEN_CO_GET_NETCARD_TIME OID_GEN_GET_NETCARD_TIME
  176. #define OID_GEN_CO_MINIMUM_LINK_SPEED 0x00020120
  177. //
  178. // These are connection-oriented statistics OIDs.
  179. //
  180. #define OID_GEN_CO_XMIT_PDUS_OK OID_GEN_XMIT_OK
  181. #define OID_GEN_CO_RCV_PDUS_OK OID_GEN_RCV_OK
  182. #define OID_GEN_CO_XMIT_PDUS_ERROR OID_GEN_XMIT_ERROR
  183. #define OID_GEN_CO_RCV_PDUS_ERROR OID_GEN_RCV_ERROR
  184. #define OID_GEN_CO_RCV_PDUS_NO_BUFFER OID_GEN_RCV_NO_BUFFER
  185. #define OID_GEN_CO_RCV_CRC_ERROR OID_GEN_RCV_CRC_ERROR
  186. #define OID_GEN_CO_TRANSMIT_QUEUE_LENGTH OID_GEN_TRANSMIT_QUEUE_LENGTH
  187. #define OID_GEN_CO_BYTES_XMIT OID_GEN_DIRECTED_BYTES_XMIT
  188. #define OID_GEN_CO_BYTES_RCV OID_GEN_DIRECTED_BYTES_RCV
  189. #define OID_GEN_CO_NETCARD_LOAD OID_GEN_NETCARD_LOAD
  190. #define OID_GEN_CO_DEVICE_PROFILE OID_GEN_DEVICE_PROFILE
  191. #define OID_GEN_CO_BYTES_XMIT_OUTSTANDING 0x00020221
  192. //
  193. // 802.3 Objects (Ethernet)
  194. //
  195. #define OID_802_3_PERMANENT_ADDRESS 0x01010101
  196. #define OID_802_3_CURRENT_ADDRESS 0x01010102
  197. #define OID_802_3_MULTICAST_LIST 0x01010103
  198. #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
  199. #define OID_802_3_MAC_OPTIONS 0x01010105
  200. #define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001
  201. #define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
  202. #define OID_802_3_XMIT_ONE_COLLISION 0x01020102
  203. #define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
  204. #define OID_802_3_XMIT_DEFERRED 0x01020201
  205. #define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
  206. #define OID_802_3_RCV_OVERRUN 0x01020203
  207. #define OID_802_3_XMIT_UNDERRUN 0x01020204
  208. #define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
  209. #define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
  210. #define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
  211. //
  212. // 802.5 Objects (Token-Ring)
  213. //
  214. #define OID_802_5_PERMANENT_ADDRESS 0x02010101
  215. #define OID_802_5_CURRENT_ADDRESS 0x02010102
  216. #define OID_802_5_CURRENT_FUNCTIONAL 0x02010103
  217. #define OID_802_5_CURRENT_GROUP 0x02010104
  218. #define OID_802_5_LAST_OPEN_STATUS 0x02010105
  219. #define OID_802_5_CURRENT_RING_STATUS 0x02010106
  220. #define OID_802_5_CURRENT_RING_STATE 0x02010107
  221. #define OID_802_5_LINE_ERRORS 0x02020101
  222. #define OID_802_5_LOST_FRAMES 0x02020102
  223. #define OID_802_5_BURST_ERRORS 0x02020201
  224. #define OID_802_5_AC_ERRORS 0x02020202
  225. #define OID_802_5_ABORT_DELIMETERS 0x02020203
  226. #define OID_802_5_FRAME_COPIED_ERRORS 0x02020204
  227. #define OID_802_5_FREQUENCY_ERRORS 0x02020205
  228. #define OID_802_5_TOKEN_ERRORS 0x02020206
  229. #define OID_802_5_INTERNAL_ERRORS 0x02020207
  230. //
  231. // FDDI Objects
  232. //
  233. #define OID_FDDI_LONG_PERMANENT_ADDR 0x03010101
  234. #define OID_FDDI_LONG_CURRENT_ADDR 0x03010102
  235. #define OID_FDDI_LONG_MULTICAST_LIST 0x03010103
  236. #define OID_FDDI_LONG_MAX_LIST_SIZE 0x03010104
  237. #define OID_FDDI_SHORT_PERMANENT_ADDR 0x03010105
  238. #define OID_FDDI_SHORT_CURRENT_ADDR 0x03010106
  239. #define OID_FDDI_SHORT_MULTICAST_LIST 0x03010107
  240. #define OID_FDDI_SHORT_MAX_LIST_SIZE 0x03010108
  241. #define OID_FDDI_ATTACHMENT_TYPE 0x03020101
  242. #define OID_FDDI_UPSTREAM_NODE_LONG 0x03020102
  243. #define OID_FDDI_DOWNSTREAM_NODE_LONG 0x03020103
  244. #define OID_FDDI_FRAME_ERRORS 0x03020104
  245. #define OID_FDDI_FRAMES_LOST 0x03020105
  246. #define OID_FDDI_RING_MGT_STATE 0x03020106
  247. #define OID_FDDI_LCT_FAILURES 0x03020107
  248. #define OID_FDDI_LEM_REJECTS 0x03020108
  249. #define OID_FDDI_LCONNECTION_STATE 0x03020109
  250. #define OID_FDDI_SMT_STATION_ID 0x03030201
  251. #define OID_FDDI_SMT_OP_VERSION_ID 0x03030202
  252. #define OID_FDDI_SMT_HI_VERSION_ID 0x03030203
  253. #define OID_FDDI_SMT_LO_VERSION_ID 0x03030204
  254. #define OID_FDDI_SMT_MANUFACTURER_DATA 0x03030205
  255. #define OID_FDDI_SMT_USER_DATA 0x03030206
  256. #define OID_FDDI_SMT_MIB_VERSION_ID 0x03030207
  257. #define OID_FDDI_SMT_MAC_CT 0x03030208
  258. #define OID_FDDI_SMT_NON_MASTER_CT 0x03030209
  259. #define OID_FDDI_SMT_MASTER_CT 0x0303020A
  260. #define OID_FDDI_SMT_AVAILABLE_PATHS 0x0303020B
  261. #define OID_FDDI_SMT_CONFIG_CAPABILITIES 0x0303020C
  262. #define OID_FDDI_SMT_CONFIG_POLICY 0x0303020D
  263. #define OID_FDDI_SMT_CONNECTION_POLICY 0x0303020E
  264. #define OID_FDDI_SMT_T_NOTIFY 0x0303020F
  265. #define OID_FDDI_SMT_STAT_RPT_POLICY 0x03030210
  266. #define OID_FDDI_SMT_TRACE_MAX_EXPIRATION 0x03030211
  267. #define OID_FDDI_SMT_PORT_INDEXES 0x03030212
  268. #define OID_FDDI_SMT_MAC_INDEXES 0x03030213
  269. #define OID_FDDI_SMT_BYPASS_PRESENT 0x03030214
  270. #define OID_FDDI_SMT_ECM_STATE 0x03030215
  271. #define OID_FDDI_SMT_CF_STATE 0x03030216
  272. #define OID_FDDI_SMT_HOLD_STATE 0x03030217
  273. #define OID_FDDI_SMT_REMOTE_DISCONNECT_FLAG 0x03030218
  274. #define OID_FDDI_SMT_STATION_STATUS 0x03030219
  275. #define OID_FDDI_SMT_PEER_WRAP_FLAG 0x0303021A
  276. #define OID_FDDI_SMT_MSG_TIME_STAMP 0x0303021B
  277. #define OID_FDDI_SMT_TRANSITION_TIME_STAMP 0x0303021C
  278. #define OID_FDDI_SMT_SET_COUNT 0x0303021D
  279. #define OID_FDDI_SMT_LAST_SET_STATION_ID 0x0303021E
  280. #define OID_FDDI_MAC_FRAME_STATUS_FUNCTIONS 0x0303021F
  281. #define OID_FDDI_MAC_BRIDGE_FUNCTIONS 0x03030220
  282. #define OID_FDDI_MAC_T_MAX_CAPABILITY 0x03030221
  283. #define OID_FDDI_MAC_TVX_CAPABILITY 0x03030222
  284. #define OID_FDDI_MAC_AVAILABLE_PATHS 0x03030223
  285. #define OID_FDDI_MAC_CURRENT_PATH 0x03030224
  286. #define OID_FDDI_MAC_UPSTREAM_NBR 0x03030225
  287. #define OID_FDDI_MAC_DOWNSTREAM_NBR 0x03030226
  288. #define OID_FDDI_MAC_OLD_UPSTREAM_NBR 0x03030227
  289. #define OID_FDDI_MAC_OLD_DOWNSTREAM_NBR 0x03030228
  290. #define OID_FDDI_MAC_DUP_ADDRESS_TEST 0x03030229
  291. #define OID_FDDI_MAC_REQUESTED_PATHS 0x0303022A
  292. #define OID_FDDI_MAC_DOWNSTREAM_PORT_TYPE 0x0303022B
  293. #define OID_FDDI_MAC_INDEX 0x0303022C
  294. #define OID_FDDI_MAC_SMT_ADDRESS 0x0303022D
  295. #define OID_FDDI_MAC_LONG_GRP_ADDRESS 0x0303022E
  296. #define OID_FDDI_MAC_SHORT_GRP_ADDRESS 0x0303022F
  297. #define OID_FDDI_MAC_T_REQ 0x03030230
  298. #define OID_FDDI_MAC_T_NEG 0x03030231
  299. #define OID_FDDI_MAC_T_MAX 0x03030232
  300. #define OID_FDDI_MAC_TVX_VALUE 0x03030233
  301. #define OID_FDDI_MAC_T_PRI0 0x03030234
  302. #define OID_FDDI_MAC_T_PRI1 0x03030235
  303. #define OID_FDDI_MAC_T_PRI2 0x03030236
  304. #define OID_FDDI_MAC_T_PRI3 0x03030237
  305. #define OID_FDDI_MAC_T_PRI4 0x03030238
  306. #define OID_FDDI_MAC_T_PRI5 0x03030239
  307. #define OID_FDDI_MAC_T_PRI6 0x0303023A
  308. #define OID_FDDI_MAC_FRAME_CT 0x0303023B
  309. #define OID_FDDI_MAC_COPIED_CT 0x0303023C
  310. #define OID_FDDI_MAC_TRANSMIT_CT 0x0303023D
  311. #define OID_FDDI_MAC_TOKEN_CT 0x0303023E
  312. #define OID_FDDI_MAC_ERROR_CT 0x0303023F
  313. #define OID_FDDI_MAC_LOST_CT 0x03030240
  314. #define OID_FDDI_MAC_TVX_EXPIRED_CT 0x03030241
  315. #define OID_FDDI_MAC_NOT_COPIED_CT 0x03030242
  316. #define OID_FDDI_MAC_LATE_CT 0x03030243
  317. #define OID_FDDI_MAC_RING_OP_CT 0x03030244
  318. #define OID_FDDI_MAC_FRAME_ERROR_THRESHOLD 0x03030245
  319. #define OID_FDDI_MAC_FRAME_ERROR_RATIO 0x03030246
  320. #define OID_FDDI_MAC_NOT_COPIED_THRESHOLD 0x03030247
  321. #define OID_FDDI_MAC_NOT_COPIED_RATIO 0x03030248
  322. #define OID_FDDI_MAC_RMT_STATE 0x03030249
  323. #define OID_FDDI_MAC_DA_FLAG 0x0303024A
  324. #define OID_FDDI_MAC_UNDA_FLAG 0x0303024B
  325. #define OID_FDDI_MAC_FRAME_ERROR_FLAG 0x0303024C
  326. #define OID_FDDI_MAC_NOT_COPIED_FLAG 0x0303024D
  327. #define OID_FDDI_MAC_MA_UNITDATA_AVAILABLE 0x0303024E
  328. #define OID_FDDI_MAC_HARDWARE_PRESENT 0x0303024F
  329. #define OID_FDDI_MAC_MA_UNITDATA_ENABLE 0x03030250
  330. #define OID_FDDI_PATH_INDEX 0x03030251
  331. #define OID_FDDI_PATH_RING_LATENCY 0x03030252
  332. #define OID_FDDI_PATH_TRACE_STATUS 0x03030253
  333. #define OID_FDDI_PATH_SBA_PAYLOAD 0x03030254
  334. #define OID_FDDI_PATH_SBA_OVERHEAD 0x03030255
  335. #define OID_FDDI_PATH_CONFIGURATION 0x03030256
  336. #define OID_FDDI_PATH_T_R_MODE 0x03030257
  337. #define OID_FDDI_PATH_SBA_AVAILABLE 0x03030258
  338. #define OID_FDDI_PATH_TVX_LOWER_BOUND 0x03030259
  339. #define OID_FDDI_PATH_T_MAX_LOWER_BOUND 0x0303025A
  340. #define OID_FDDI_PATH_MAX_T_REQ 0x0303025B
  341. #define OID_FDDI_PORT_MY_TYPE 0x0303025C
  342. #define OID_FDDI_PORT_NEIGHBOR_TYPE 0x0303025D
  343. #define OID_FDDI_PORT_CONNECTION_POLICIES 0x0303025E
  344. #define OID_FDDI_PORT_MAC_INDICATED 0x0303025F
  345. #define OID_FDDI_PORT_CURRENT_PATH 0x03030260
  346. #define OID_FDDI_PORT_REQUESTED_PATHS 0x03030261
  347. #define OID_FDDI_PORT_MAC_PLACEMENT 0x03030262
  348. #define OID_FDDI_PORT_AVAILABLE_PATHS 0x03030263
  349. #define OID_FDDI_PORT_MAC_LOOP_TIME 0x03030264
  350. #define OID_FDDI_PORT_PMD_CLASS 0x03030265
  351. #define OID_FDDI_PORT_CONNECTION_CAPABILITIES 0x03030266
  352. #define OID_FDDI_PORT_INDEX 0x03030267
  353. #define OID_FDDI_PORT_MAINT_LS 0x03030268
  354. #define OID_FDDI_PORT_BS_FLAG 0x03030269
  355. #define OID_FDDI_PORT_PC_LS 0x0303026A
  356. #define OID_FDDI_PORT_EB_ERROR_CT 0x0303026B
  357. #define OID_FDDI_PORT_LCT_FAIL_CT 0x0303026C
  358. #define OID_FDDI_PORT_LER_ESTIMATE 0x0303026D
  359. #define OID_FDDI_PORT_LEM_REJECT_CT 0x0303026E
  360. #define OID_FDDI_PORT_LEM_CT 0x0303026F
  361. #define OID_FDDI_PORT_LER_CUTOFF 0x03030270
  362. #define OID_FDDI_PORT_LER_ALARM 0x03030271
  363. #define OID_FDDI_PORT_CONNNECT_STATE 0x03030272
  364. #define OID_FDDI_PORT_PCM_STATE 0x03030273
  365. #define OID_FDDI_PORT_PC_WITHHOLD 0x03030274
  366. #define OID_FDDI_PORT_LER_FLAG 0x03030275
  367. #define OID_FDDI_PORT_HARDWARE_PRESENT 0x03030276
  368. #define OID_FDDI_SMT_STATION_ACTION 0x03030277
  369. #define OID_FDDI_PORT_ACTION 0x03030278
  370. #define OID_FDDI_IF_DESCR 0x03030279
  371. #define OID_FDDI_IF_TYPE 0x0303027A
  372. #define OID_FDDI_IF_MTU 0x0303027B
  373. #define OID_FDDI_IF_SPEED 0x0303027C
  374. #define OID_FDDI_IF_PHYS_ADDRESS 0x0303027D
  375. #define OID_FDDI_IF_ADMIN_STATUS 0x0303027E
  376. #define OID_FDDI_IF_OPER_STATUS 0x0303027F
  377. #define OID_FDDI_IF_LAST_CHANGE 0x03030280
  378. #define OID_FDDI_IF_IN_OCTETS 0x03030281
  379. #define OID_FDDI_IF_IN_UCAST_PKTS 0x03030282
  380. #define OID_FDDI_IF_IN_NUCAST_PKTS 0x03030283
  381. #define OID_FDDI_IF_IN_DISCARDS 0x03030284
  382. #define OID_FDDI_IF_IN_ERRORS 0x03030285
  383. #define OID_FDDI_IF_IN_UNKNOWN_PROTOS 0x03030286
  384. #define OID_FDDI_IF_OUT_OCTETS 0x03030287
  385. #define OID_FDDI_IF_OUT_UCAST_PKTS 0x03030288
  386. #define OID_FDDI_IF_OUT_NUCAST_PKTS 0x03030289
  387. #define OID_FDDI_IF_OUT_DISCARDS 0x0303028A
  388. #define OID_FDDI_IF_OUT_ERRORS 0x0303028B
  389. #define OID_FDDI_IF_OUT_QLEN 0x0303028C
  390. #define OID_FDDI_IF_SPECIFIC 0x0303028D
  391. //
  392. // WAN objects
  393. //
  394. #define OID_WAN_PERMANENT_ADDRESS 0x04010101
  395. #define OID_WAN_CURRENT_ADDRESS 0x04010102
  396. #define OID_WAN_QUALITY_OF_SERVICE 0x04010103
  397. #define OID_WAN_PROTOCOL_TYPE 0x04010104
  398. #define OID_WAN_MEDIUM_SUBTYPE 0x04010105
  399. #define OID_WAN_HEADER_FORMAT 0x04010106
  400. #define OID_WAN_GET_INFO 0x04010107
  401. #define OID_WAN_SET_LINK_INFO 0x04010108
  402. #define OID_WAN_GET_LINK_INFO 0x04010109
  403. #define OID_WAN_LINE_COUNT 0x0401010A
  404. #define OID_WAN_PROTOCOL_CAPS 0x0401010B
  405. #define OID_WAN_GET_BRIDGE_INFO 0x0401020A
  406. #define OID_WAN_SET_BRIDGE_INFO 0x0401020B
  407. #define OID_WAN_GET_COMP_INFO 0x0401020C
  408. #define OID_WAN_SET_COMP_INFO 0x0401020D
  409. #define OID_WAN_GET_STATS_INFO 0x0401020E
  410. //
  411. // These are connection-oriented WAN OIDs.
  412. // These replace the above OIDs for CoNDIS WAN Miniports
  413. //
  414. #define OID_WAN_CO_GET_INFO 0x04010180
  415. #define OID_WAN_CO_SET_LINK_INFO 0x04010181
  416. #define OID_WAN_CO_GET_LINK_INFO 0x04010182
  417. #define OID_WAN_CO_GET_COMP_INFO 0x04010280
  418. #define OID_WAN_CO_SET_COMP_INFO 0x04010281
  419. #define OID_WAN_CO_GET_STATS_INFO 0x04010282
  420. //
  421. // LocalTalk objects
  422. //
  423. #define OID_LTALK_CURRENT_NODE_ID 0x05010102
  424. #define OID_LTALK_IN_BROADCASTS 0x05020101
  425. #define OID_LTALK_IN_LENGTH_ERRORS 0x05020102
  426. #define OID_LTALK_OUT_NO_HANDLERS 0x05020201
  427. #define OID_LTALK_COLLISIONS 0x05020202
  428. #define OID_LTALK_DEFERS 0x05020203
  429. #define OID_LTALK_NO_DATA_ERRORS 0x05020204
  430. #define OID_LTALK_RANDOM_CTS_ERRORS 0x05020205
  431. #define OID_LTALK_FCS_ERRORS 0x05020206
  432. //
  433. // Arcnet objects
  434. //
  435. #define OID_ARCNET_PERMANENT_ADDRESS 0x06010101
  436. #define OID_ARCNET_CURRENT_ADDRESS 0x06010102
  437. #define OID_ARCNET_RECONFIGURATIONS 0x06020201
  438. //
  439. // TAPI objects
  440. //
  441. #define OID_TAPI_ACCEPT 0x07030101
  442. #define OID_TAPI_ANSWER 0x07030102
  443. #define OID_TAPI_CLOSE 0x07030103
  444. #define OID_TAPI_CLOSE_CALL 0x07030104
  445. #define OID_TAPI_CONDITIONAL_MEDIA_DETECTION 0x07030105
  446. #define OID_TAPI_CONFIG_DIALOG 0x07030106
  447. #define OID_TAPI_DEV_SPECIFIC 0x07030107
  448. #define OID_TAPI_DIAL 0x07030108
  449. #define OID_TAPI_DROP 0x07030109
  450. #define OID_TAPI_GET_ADDRESS_CAPS 0x0703010A
  451. #define OID_TAPI_GET_ADDRESS_ID 0x0703010B
  452. #define OID_TAPI_GET_ADDRESS_STATUS 0x0703010C
  453. #define OID_TAPI_GET_CALL_ADDRESS_ID 0x0703010D
  454. #define OID_TAPI_GET_CALL_INFO 0x0703010E
  455. #define OID_TAPI_GET_CALL_STATUS 0x0703010F
  456. #define OID_TAPI_GET_DEV_CAPS 0x07030110
  457. #define OID_TAPI_GET_DEV_CONFIG 0x07030111
  458. #define OID_TAPI_GET_EXTENSION_ID 0x07030112
  459. #define OID_TAPI_GET_ID 0x07030113
  460. #define OID_TAPI_GET_LINE_DEV_STATUS 0x07030114
  461. #define OID_TAPI_MAKE_CALL 0x07030115
  462. #define OID_TAPI_NEGOTIATE_EXT_VERSION 0x07030116
  463. #define OID_TAPI_OPEN 0x07030117
  464. #define OID_TAPI_PROVIDER_INITIALIZE 0x07030118
  465. #define OID_TAPI_PROVIDER_SHUTDOWN 0x07030119
  466. #define OID_TAPI_SECURE_CALL 0x0703011A
  467. #define OID_TAPI_SELECT_EXT_VERSION 0x0703011B
  468. #define OID_TAPI_SEND_USER_USER_INFO 0x0703011C
  469. #define OID_TAPI_SET_APP_SPECIFIC 0x0703011D
  470. #define OID_TAPI_SET_CALL_PARAMS 0x0703011E
  471. #define OID_TAPI_SET_DEFAULT_MEDIA_DETECTION 0x0703011F
  472. #define OID_TAPI_SET_DEV_CONFIG 0x07030120
  473. #define OID_TAPI_SET_MEDIA_MODE 0x07030121
  474. #define OID_TAPI_SET_STATUS_MESSAGES 0x07030122
  475. #define OID_TAPI_GATHER_DIGITS 0x07030123
  476. #define OID_TAPI_MONITOR_DIGITS 0x07030124
  477. //
  478. // ATM Connection Oriented OIDs
  479. //
  480. #define OID_ATM_SUPPORTED_VC_RATES 0x08010101
  481. #define OID_ATM_SUPPORTED_SERVICE_CATEGORY 0x08010102
  482. #define OID_ATM_SUPPORTED_AAL_TYPES 0x08010103
  483. #define OID_ATM_HW_CURRENT_ADDRESS 0x08010104
  484. #define OID_ATM_MAX_ACTIVE_VCS 0x08010105
  485. #define OID_ATM_MAX_ACTIVE_VCI_BITS 0x08010106
  486. #define OID_ATM_MAX_ACTIVE_VPI_BITS 0x08010107
  487. #define OID_ATM_MAX_AAL0_PACKET_SIZE 0x08010108
  488. #define OID_ATM_MAX_AAL1_PACKET_SIZE 0x08010109
  489. #define OID_ATM_MAX_AAL34_PACKET_SIZE 0x0801010A
  490. #define OID_ATM_MAX_AAL5_PACKET_SIZE 0x0801010B
  491. #define OID_ATM_SIGNALING_VPIVCI 0x08010201
  492. #define OID_ATM_ASSIGNED_VPI 0x08010202
  493. #define OID_ATM_ACQUIRE_ACCESS_NET_RESOURCES 0x08010203
  494. #define OID_ATM_RELEASE_ACCESS_NET_RESOURCES 0x08010204
  495. #define OID_ATM_ILMI_VPIVCI 0x08010205
  496. #define OID_ATM_DIGITAL_BROADCAST_VPIVCI 0x08010206
  497. #define OID_ATM_GET_NEAREST_FLOW 0x08010207
  498. #define OID_ATM_ALIGNMENT_REQUIRED 0x08010208
  499. #define OID_ATM_LECS_ADDRESS 0x08010209
  500. #define OID_ATM_SERVICE_ADDRESS 0x0801020A
  501. #define OID_ATM_CALL_PROCEEDING 0x0801020B // UNI 4.0
  502. #define OID_ATM_CALL_ALERTING 0x0801020C // UNI 4.0
  503. #define OID_ATM_PARTY_ALERTING 0x0801020D // UNI 4.0
  504. #define OID_ATM_CALL_NOTIFY 0x0801020E // UNI 4.0
  505. #define OID_ATM_MY_IP_NM_ADDRESS 0x0801020F
  506. //
  507. // ATM specific statistics OIDs.
  508. //
  509. #define OID_ATM_RCV_CELLS_OK 0x08020101
  510. #define OID_ATM_XMIT_CELLS_OK 0x08020102
  511. #define OID_ATM_RCV_CELLS_DROPPED 0x08020103
  512. #define OID_ATM_RCV_INVALID_VPI_VCI 0x08020201
  513. #define OID_ATM_CELLS_HEC_ERROR 0x08020202
  514. #define OID_ATM_RCV_REASSEMBLY_ERROR 0x08020203
  515. //
  516. // PCCA (Wireless) object
  517. //
  518. //
  519. // All WirelessWAN devices must support the following OIDs
  520. //
  521. #define OID_WW_GEN_NETWORK_TYPES_SUPPORTED 0x09010101
  522. #define OID_WW_GEN_NETWORK_TYPE_IN_USE 0x09010102
  523. #define OID_WW_GEN_HEADER_FORMATS_SUPPORTED 0x09010103
  524. #define OID_WW_GEN_HEADER_FORMAT_IN_USE 0x09010104
  525. #define OID_WW_GEN_INDICATION_REQUEST 0x09010105
  526. #define OID_WW_GEN_DEVICE_INFO 0x09010106
  527. #define OID_WW_GEN_OPERATION_MODE 0x09010107
  528. #define OID_WW_GEN_LOCK_STATUS 0x09010108
  529. #define OID_WW_GEN_DISABLE_TRANSMITTER 0x09010109
  530. #define OID_WW_GEN_NETWORK_ID 0x0901010A
  531. #define OID_WW_GEN_PERMANENT_ADDRESS 0x0901010B
  532. #define OID_WW_GEN_CURRENT_ADDRESS 0x0901010C
  533. #define OID_WW_GEN_SUSPEND_DRIVER 0x0901010D
  534. #define OID_WW_GEN_BASESTATION_ID 0x0901010E
  535. #define OID_WW_GEN_CHANNEL_ID 0x0901010F
  536. #define OID_WW_GEN_ENCRYPTION_SUPPORTED 0x09010110
  537. #define OID_WW_GEN_ENCRYPTION_IN_USE 0x09010111
  538. #define OID_WW_GEN_ENCRYPTION_STATE 0x09010112
  539. #define OID_WW_GEN_CHANNEL_QUALITY 0x09010113
  540. #define OID_WW_GEN_REGISTRATION_STATUS 0x09010114
  541. #define OID_WW_GEN_RADIO_LINK_SPEED 0x09010115
  542. #define OID_WW_GEN_LATENCY 0x09010116
  543. #define OID_WW_GEN_BATTERY_LEVEL 0x09010117
  544. #define OID_WW_GEN_EXTERNAL_POWER 0x09010118
  545. //
  546. // These are optional
  547. //
  548. #define OID_WW_GEN_PING_ADDRESS 0x09010201
  549. #define OID_WW_GEN_RSSI 0x09010202
  550. #define OID_WW_GEN_SIM_STATUS 0x09010203
  551. #define OID_WW_GEN_ENABLE_SIM_PIN 0x09010204
  552. #define OID_WW_GEN_CHANGE_SIM_PIN 0x09010205
  553. #define OID_WW_GEN_SIM_PUK 0x09010206
  554. #define OID_WW_GEN_SIM_EXCEPTION 0x09010207
  555. //
  556. // Network Dependent OIDs - Mobitex:
  557. //
  558. #define OID_WW_MBX_SUBADDR 0x09050101
  559. // OID 0x09050102 is reserved and may not be used
  560. #define OID_WW_MBX_FLEXLIST 0x09050103
  561. #define OID_WW_MBX_GROUPLIST 0x09050104
  562. #define OID_WW_MBX_TRAFFIC_AREA 0x09050105
  563. #define OID_WW_MBX_LIVE_DIE 0x09050106
  564. #define OID_WW_MBX_TEMP_DEFAULTLIST 0x09050107
  565. //
  566. // Network Dependent OIDs - Pinpoint:
  567. //
  568. //
  569. // The following Pin Point characteristics have been deprecated by the
  570. // PCCA and are considered reserved values. They are include here only for
  571. // historical purposes and should not be used
  572. //
  573. #define OID_WW_PIN_LOC_AUTHORIZE 0x09090101
  574. #define OID_WW_PIN_LAST_LOCATION 0x09090102
  575. #define OID_WW_PIN_LOC_FIX 0x09090103
  576. //
  577. // Network Dependent - CDPD:
  578. //
  579. #define OID_WW_CDPD_SPNI 0x090D0101
  580. #define OID_WW_CDPD_WASI 0x090D0102
  581. #define OID_WW_CDPD_AREA_COLOR 0x090D0103
  582. #define OID_WW_CDPD_TX_POWER_LEVEL 0x090D0104
  583. #define OID_WW_CDPD_EID 0x090D0105
  584. #define OID_WW_CDPD_HEADER_COMPRESSION 0x090D0106
  585. #define OID_WW_CDPD_DATA_COMPRESSION 0x090D0107
  586. #define OID_WW_CDPD_CHANNEL_SELECT 0x090D0108
  587. #define OID_WW_CDPD_CHANNEL_STATE 0x090D0109
  588. #define OID_WW_CDPD_NEI 0x090D010A
  589. #define OID_WW_CDPD_NEI_STATE 0x090D010B
  590. #define OID_WW_CDPD_SERVICE_PROVIDER_IDENTIFIER 0x090D010C
  591. #define OID_WW_CDPD_SLEEP_MODE 0x090D010D
  592. //
  593. // At the request of the PCCA STD-201 Annex C working group the following OID
  594. // value has been superceeded by more specific objects. Its value is reserved by
  595. // the PCCA,is included here for historical purposes only, and should not be
  596. // used.
  597. //
  598. #define OID_WW_CDPD_CIRCUIT_SWITCHED 0x090D010E
  599. #define OID_WW_CDPD_TEI 0x090D010F
  600. #define OID_WW_CDPD_RSSI 0x090D0110
  601. //
  602. // CDPD Circuit Switched objects
  603. //
  604. #define OID_WW_CDPD_CS_SERVICE_PREFERENCE 0x090D0111
  605. #define OID_WW_CDPD_CS_SERVICE_STATUS 0x090D0112
  606. #define OID_WW_CDPD_CS_INFO 0x090D0113
  607. #define OID_WW_CDPD_CS_SUSPEND 0x090D0114
  608. #define OID_WW_CDPD_CS_DEFAULT_DIAL_CODE 0x090D0115
  609. #define OID_WW_CDPD_CS_CALLBACK 0x090D0116
  610. #define OID_WW_CDPD_CS_SID_LIST 0x090D0117
  611. #define OID_WW_CDPD_CS_CONFIGURATION 0x090D0118
  612. //
  613. // Network Dependent - Ardis:
  614. //
  615. //
  616. // At the request of Ardis these OID value have been superceeded. Their
  617. // functionality has been merged with the DataTAC objects. Therefore
  618. // these values are reserved by the PCCA, are include here for
  619. // historical purposes only, and should not be used.
  620. //
  621. #define OID_WW_ARD_SNDCP 0x09110101
  622. #define OID_WW_ARD_TMLY_MSG 0x09110102
  623. #define OID_WW_ARD_DATAGRAM 0x09110103
  624. //
  625. // Network Dependent - DataTac:
  626. //
  627. #define OID_WW_TAC_COMPRESSION 0x09150101
  628. //
  629. // At the request of Motorola, the following two OID values have been
  630. // superceeded. Their functionality has been subsumed by other more specific
  631. // DataTac objects and should not be used. These values are reserved by the
  632. // PCCA and are include here only for historical purposes only.
  633. //
  634. #define OID_WW_TAC_SET_CONFIG 0x09150102
  635. #define OID_WW_TAC_GET_STATUS 0x09150103
  636. #define OID_WW_TAC_USER_HEADER 0x09150104
  637. //
  638. // DataTAC characteristic object values
  639. //
  640. #define OID_WW_TAC_UNIQUE_SDU_TAG 0x09150105
  641. #define OID_WW_TAC_SEND_COMMAND 0x09150106
  642. #define OID_WW_TAC_GET_RESPONSE 0x09150107
  643. #define OID_WW_TAC_DISABLE_RECEIVER 0x09150108
  644. #define OID_WW_TAC_ANTENNA_MODE 0x09150109
  645. #define OID_WW_TAC_FLUSH_DATA 0x0915010A
  646. #define OID_WW_TAC_SHUTDOWN_DEVICE 0x0915010B
  647. #define OID_WW_TAC_DEVICE_EXCEPTION 0x0915010C
  648. #define OID_WW_TAC_RECEIVE_EXCEPTION 0x0915010D
  649. #define OID_WW_TAC_BUFFER_EXCEPTION 0x0915010E
  650. #define OID_WW_TAC_BATTERY_EXCEPTION 0x0915010F
  651. #define OID_WW_TAC_TRANSMITTER_KEYED 0x09150110
  652. #define OID_WW_TAC_SYSTEM_TABLE 0x09150111
  653. #define OID_WW_TAC_CHANNEL_TABLE 0x09150112
  654. #define OID_WW_TAC_DCHANNEL_TABLE 0x09150113
  655. #define OID_WW_TAC_RECEIVE_QUEUE_COUNT 0x09150114
  656. //
  657. // DataTac statistic object value
  658. //
  659. #define OID_WW_TAC_STATISTICS 0x09160101
  660. //
  661. // Network Dependent - Metricom:
  662. //
  663. #define OID_WW_MET_FUNCTION 0x09190101
  664. //
  665. // IEEE 802.11 OIDs
  666. //
  667. #define OID_802_11_BSSID 0x0D010101
  668. #define OID_802_11_SSID 0x0D010102
  669. #define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0D010203
  670. #define OID_802_11_NETWORK_TYPE_IN_USE 0x0D010204
  671. #define OID_802_11_TX_POWER_LEVEL 0x0D010205
  672. #define OID_802_11_RSSI 0x0D010206
  673. #define OID_802_11_RSSI_TRIGGER 0x0D010207
  674. #define OID_802_11_INFRASTRUCTURE_MODE 0x0D010108
  675. #define OID_802_11_FRAGMENTATION_THRESHOLD 0x0D010209
  676. #define OID_802_11_RTS_THRESHOLD 0x0D01020A
  677. #define OID_802_11_NUMBER_OF_ANTENNAS 0x0D01020B
  678. #define OID_802_11_RX_ANTENNA_SELECTED 0x0D01020C
  679. #define OID_802_11_TX_ANTENNA_SELECTED 0x0D01020D
  680. #define OID_802_11_SUPPORTED_RATES 0x0D01020E
  681. #define OID_802_11_DESIRED_RATES 0x0D010210
  682. #define OID_802_11_CONFIGURATION 0x0D010211
  683. #define OID_802_11_STATISTICS 0x0D020212
  684. #define OID_802_11_ADD_WEP 0x0D010113
  685. #define OID_802_11_REMOVE_WEP 0x0D010114
  686. #define OID_802_11_DISASSOCIATE 0x0D010115
  687. #define OID_802_11_POWER_MODE 0x0D010216
  688. #define OID_802_11_BSSID_LIST 0x0D010217
  689. #define OID_802_11_AUTHENTICATION_MODE 0x0D010118
  690. #define OID_802_11_PRIVACY_FILTER 0x0D010119
  691. #define OID_802_11_BSSID_LIST_SCAN 0x0D01011A
  692. #define OID_802_11_WEP_STATUS 0x0D01011B
  693. #define OID_802_11_RELOAD_DEFAULTS 0x0D01011C
  694. //
  695. // IEEE 802.11 Structures and definitions
  696. //
  697. typedef enum _NDIS_802_11_NETWORK_TYPE
  698. {
  699. Ndis802_11FH,
  700. Ndis802_11DS,
  701. Ndis802_11NetworkTypeMax // not a real type, defined as an upper bound
  702. } NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
  703. typedef struct _NDIS_802_11_NETWORK_TYPE_LIST
  704. {
  705. ULONG NumberOfItems; // in list below, at least 1
  706. NDIS_802_11_NETWORK_TYPE NetworkType [1];
  707. } NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST;
  708. typedef enum _NDIS_802_11_POWER_MODE
  709. {
  710. Ndis802_11PowerModeCAM,
  711. Ndis802_11PowerModeMAX_PSP,
  712. Ndis802_11PowerModeFast_PSP,
  713. Ndis802_11PowerModeMax // not a real mode, defined as an upper bound
  714. } NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE;
  715. typedef ULONG NDIS_802_11_TX_POWER_LEVEL; // in milliwatts
  716. //
  717. // Received Signal Strength Indication
  718. //
  719. typedef LONG NDIS_802_11_RSSI; // in dBm
  720. typedef struct _NDIS_802_11_CONFIGURATION_FH
  721. {
  722. ULONG Length; // Length of structure
  723. ULONG HopPattern; // As defined by 802.11, MSB set
  724. ULONG HopSet; // to one if non-802.11
  725. ULONG DwellTime; // units are Kusec
  726. } NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH;
  727. typedef struct _NDIS_802_11_CONFIGURATION
  728. {
  729. ULONG Length; // Length of structure
  730. ULONG BeaconPeriod; // units are Kusec
  731. ULONG ATIMWindow; // units are Kusec
  732. ULONG DSConfig; // Frequency, units are kHz
  733. NDIS_802_11_CONFIGURATION_FH FHConfig;
  734. } NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION;
  735. typedef struct _NDIS_802_11_STATISTICS
  736. {
  737. ULONG Length; // Length of structure
  738. LARGE_INTEGER TransmittedFragmentCount;
  739. LARGE_INTEGER MulticastTransmittedFrameCount;
  740. LARGE_INTEGER FailedCount;
  741. LARGE_INTEGER RetryCount;
  742. LARGE_INTEGER MultipleRetryCount;
  743. LARGE_INTEGER RTSSuccessCount;
  744. LARGE_INTEGER RTSFailureCount;
  745. LARGE_INTEGER ACKFailureCount;
  746. LARGE_INTEGER FrameDuplicateCount;
  747. LARGE_INTEGER ReceivedFragmentCount;
  748. LARGE_INTEGER MulticastReceivedFrameCount;
  749. LARGE_INTEGER FCSErrorCount;
  750. } NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS;
  751. typedef ULONG NDIS_802_11_KEY_INDEX;
  752. typedef struct _NDIS_802_11_WEP
  753. {
  754. ULONG Length; // Length of this structure
  755. ULONG KeyIndex; // 0 is the per-client key, 1-N are the
  756. // global keys
  757. ULONG KeyLength; // length of key in bytes
  758. UCHAR KeyMaterial[1]; // variable length depending on above field
  759. } NDIS_802_11_WEP, *PNDIS_802_11_WEP;
  760. typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE
  761. {
  762. Ndis802_11IBSS,
  763. Ndis802_11Infrastructure,
  764. Ndis802_11AutoUnknown,
  765. Ndis802_11InfrastructureMax // Not a real value, defined as upper bound
  766. } NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE;
  767. typedef enum _NDIS_802_11_AUTHENTICATION_MODE
  768. {
  769. Ndis802_11AuthModeOpen,
  770. Ndis802_11AuthModeShared,
  771. Ndis802_11AuthModeAutoSwitch,
  772. Ndis802_11AuthModeMax // Not a real mode, defined as upper bound
  773. } NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE;
  774. typedef UCHAR NDIS_802_11_RATES[8]; // Set of 8 data rates
  775. typedef UCHAR NDIS_802_11_MAC_ADDRESS[6];
  776. typedef struct _NDIS_802_11_SSID
  777. {
  778. ULONG SsidLength; // length of SSID field below, in bytes;
  779. // this can be zero.
  780. UCHAR Ssid[32]; // SSID information field
  781. } NDIS_802_11_SSID, *PNDIS_802_11_SSID;
  782. typedef struct _NDIS_WLAN_BSSID
  783. {
  784. ULONG Length; // Length of this structure
  785. NDIS_802_11_MAC_ADDRESS MacAddress; // BSSID
  786. UCHAR Reserved[2];
  787. NDIS_802_11_SSID Ssid; // SSID
  788. ULONG Privacy; // WEP encryption requirement
  789. NDIS_802_11_RSSI Rssi; // receive signal
  790. // strength in dBm
  791. NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
  792. NDIS_802_11_CONFIGURATION Configuration;
  793. NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
  794. NDIS_802_11_RATES SupportedRates;
  795. } NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID;
  796. typedef struct _NDIS_802_11_BSSID_LIST
  797. {
  798. ULONG NumberOfItems; // in list below, at least 1
  799. NDIS_WLAN_BSSID Bssid[1];
  800. } NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST;
  801. typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD;
  802. typedef ULONG NDIS_802_11_RTS_THRESHOLD;
  803. typedef ULONG NDIS_802_11_ANTENNA;
  804. typedef enum _NDIS_802_11_PRIVACY_FILTER
  805. {
  806. Ndis802_11PrivFilterAcceptAll,
  807. Ndis802_11PrivFilter8021xWEP
  808. } NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER;
  809. typedef enum _NDIS_802_11_WEP_STATUS
  810. {
  811. Ndis802_11WEPEnabled,
  812. Ndis802_11WEPDisabled,
  813. Ndis802_11WEPKeyAbsent,
  814. Ndis802_11WEPNotSupported
  815. } NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS;
  816. typedef enum _NDIS_802_11_RELOAD_DEFAULTS
  817. {
  818. Ndis802_11ReloadWEPKeys
  819. } NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS;
  820. //
  821. // IRDA objects
  822. //
  823. #define OID_IRDA_RECEIVING 0x0A010100
  824. #define OID_IRDA_TURNAROUND_TIME 0x0A010101
  825. #define OID_IRDA_SUPPORTED_SPEEDS 0x0A010102
  826. #define OID_IRDA_LINK_SPEED 0x0A010103
  827. #define OID_IRDA_MEDIA_BUSY 0x0A010104
  828. #define OID_IRDA_EXTRA_RCV_BOFS 0x0A010200
  829. #define OID_IRDA_RATE_SNIFF 0x0A010201
  830. #define OID_IRDA_UNICAST_LIST 0x0A010202
  831. #define OID_IRDA_MAX_UNICAST_LIST_SIZE 0x0A010203
  832. #define OID_IRDA_MAX_RECEIVE_WINDOW_SIZE 0x0A010204
  833. #define OID_IRDA_MAX_SEND_WINDOW_SIZE 0x0A010205
  834. #define OID_IRDA_RESERVED1 0x0A01020A // The range between OID_IRDA_RESERVED1
  835. #define OID_IRDA_RESERVED2 0x0A01020F // and OID_IRDA_RESERVED2 is reserved
  836. //
  837. // BPC OIDs
  838. //
  839. #define OID_BPC_ADAPTER_CAPS 0x0B010100
  840. #define OID_BPC_DEVICES 0x0B010101
  841. #define OID_BPC_DEVICE_CAPS 0x0B010102
  842. #define OID_BPC_DEVICE_SETTINGS 0x0B010103
  843. #define OID_BPC_CONNECTION_STATUS 0x0B010104
  844. #define OID_BPC_ADDRESS_COMPARE 0x0B010105
  845. #define OID_BPC_PROGRAM_GUIDE 0x0B010106
  846. #define OID_BPC_LAST_ERROR 0x0B020107
  847. #define OID_BPC_POOL 0x0B010108
  848. #define OID_BPC_PROVIDER_SPECIFIC 0x0B020109
  849. #define OID_BPC_ADAPTER_SPECIFIC 0x0B02010A
  850. #define OID_BPC_CONNECT 0x0B01010B
  851. #define OID_BPC_COMMIT 0x0B01010C
  852. #define OID_BPC_DISCONNECT 0x0B01010D
  853. #define OID_BPC_CONNECTION_ENABLE 0x0B01010E
  854. #define OID_BPC_POOL_RESERVE 0x0B01010F
  855. #define OID_BPC_POOL_RETURN 0x0B010110
  856. #define OID_BPC_FORCE_RECEIVE 0x0B010111
  857. #define OID_BPC_LAST 0x0B020112
  858. //
  859. // IEEE1394 mandatory general OIDs.
  860. //
  861. #define OID_1394_LOCAL_NODE_INFO 0x0C010101
  862. #define OID_1394_VC_INFO 0x0C010102
  863. //
  864. // The following OIDs are not specific to a media.
  865. //
  866. //
  867. // These are objects for Connection-oriented media call-managers.
  868. //
  869. #define OID_CO_ADD_PVC 0xFE000001
  870. #define OID_CO_DELETE_PVC 0xFE000002
  871. #define OID_CO_GET_CALL_INFORMATION 0xFE000003
  872. #define OID_CO_ADD_ADDRESS 0xFE000004
  873. #define OID_CO_DELETE_ADDRESS 0xFE000005
  874. #define OID_CO_GET_ADDRESSES 0xFE000006
  875. #define OID_CO_ADDRESS_CHANGE 0xFE000007
  876. #define OID_CO_SIGNALING_ENABLED 0xFE000008
  877. #define OID_CO_SIGNALING_DISABLED 0xFE000009
  878. #define OID_CO_AF_CLOSE 0xFE00000A
  879. //
  880. // Objects for call-managers and MCMs that support TAPI access.
  881. //
  882. #define OID_CO_TAPI_CM_CAPS 0xFE001001
  883. #define OID_CO_TAPI_LINE_CAPS 0xFE001002
  884. #define OID_CO_TAPI_ADDRESS_CAPS 0xFE001003
  885. #define OID_CO_TAPI_TRANSLATE_TAPI_CALLPARAMS 0xFE001004
  886. #define OID_CO_TAPI_TRANSLATE_NDIS_CALLPARAMS 0xFE001005
  887. #define OID_CO_TAPI_TRANSLATE_TAPI_SAP 0xFE001006
  888. #define OID_CO_TAPI_GET_CALL_DIAGNOSTICS 0xFE001007
  889. #define OID_CO_TAPI_REPORT_DIGITS 0xFE001008
  890. #define OID_CO_TAPI_DONT_REPORT_DIGITS 0xFE001009
  891. //
  892. // PnP and PM OIDs
  893. //
  894. #define OID_PNP_CAPABILITIES 0xFD010100
  895. #define OID_PNP_SET_POWER 0xFD010101
  896. #define OID_PNP_QUERY_POWER 0xFD010102
  897. #define OID_PNP_ADD_WAKE_UP_PATTERN 0xFD010103
  898. #define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xFD010104
  899. #define OID_PNP_WAKE_UP_PATTERN_LIST 0xFD010105
  900. #define OID_PNP_ENABLE_WAKE_UP 0xFD010106
  901. //
  902. // PnP/PM Statistics (Optional).
  903. //
  904. #define OID_PNP_WAKE_UP_OK 0xFD020200
  905. #define OID_PNP_WAKE_UP_ERROR 0xFD020201
  906. //
  907. // The following bits are defined for OID_PNP_ENABLE_WAKE_UP
  908. //
  909. #define NDIS_PNP_WAKE_UP_MAGIC_PACKET 0x00000001
  910. #define NDIS_PNP_WAKE_UP_PATTERN_MATCH 0x00000002
  911. #define NDIS_PNP_WAKE_UP_LINK_CHANGE 0x00000004
  912. //
  913. // TCP/IP OIDs
  914. //
  915. #define OID_TCP_TASK_OFFLOAD 0xFC010201
  916. #define OID_TCP_TASK_IPSEC_ADD_SA 0xFC010202
  917. #define OID_TCP_TASK_IPSEC_DELETE_SA 0xFC010203
  918. #define OID_TCP_SAN_SUPPORT 0xFC010204
  919. //
  920. // Defines for FFP
  921. //
  922. #define OID_FFP_SUPPORT 0xFC010210
  923. #define OID_FFP_FLUSH 0xFC010211
  924. #define OID_FFP_CONTROL 0xFC010212
  925. #define OID_FFP_PARAMS 0xFC010213
  926. #define OID_FFP_DATA 0xFC010214
  927. #define OID_FFP_DRIVER_STATS 0xFC020210
  928. #define OID_FFP_ADAPTER_STATS 0xFC020211
  929. //
  930. // Defines for QOS
  931. //
  932. #define OID_QOS_TC_SUPPORTED 0xFB010100
  933. #define OID_QOS_REMAINING_BANDWIDTH 0xFB010101
  934. #define OID_QOS_ISSLOW_FLOW 0xFB010102
  935. #define OID_QOS_BESTEFFORT_BANDWIDTH 0xFB010103
  936. #define OID_QOS_LATENCY 0xFB010104
  937. #define OID_QOS_FLOW_IP_CONFORMING 0xFB010105
  938. #define OID_QOS_FLOW_COUNT 0xFB010106
  939. #define OID_QOS_NON_BESTEFFORT_LIMIT 0xFB010107
  940. #define OID_QOS_SCHEDULING_PROFILES_SUPPORTED 0xFB010108
  941. #define OID_QOS_CURRENT_SCHEDULING_PROFILE 0xFB010109
  942. #define OID_QOS_TIMER_RESOLUTION 0xFB01010A
  943. #define OID_QOS_STATISTICS_BUFFER 0xFB01010B
  944. #define OID_QOS_HIERARCHY_CLASS 0xFB01010C
  945. #define OID_QOS_FLOW_MODE 0xFB01010D
  946. #define OID_QOS_ISSLOW_FRAGMENT_SIZE 0xFB01010E
  947. #define OID_QOS_FLOW_IP_NONCONFORMING 0xFB01010F
  948. #define OID_QOS_FLOW_8021P_CONFORMING 0xFB010110
  949. #define OID_QOS_FLOW_8021P_NONCONFORMING 0xFB010111
  950. #define OID_QOS_ENABLE_AVG_STATS 0xFB010112
  951. #define OID_QOS_ENABLE_WINDOW_ADJUSTMENT 0xFB010113
  952. //
  953. // NDIS Proxy OID_GEN_CO_DEVICE_PROFILE structure. The optional OID and
  954. // this structure is a generic means of describing a CO device's
  955. // capabilites, and is used by the NDIS Proxy to construct a TAPI device
  956. // capabilities structure.
  957. //
  958. typedef struct NDIS_CO_DEVICE_PROFILE
  959. {
  960. NDIS_VAR_DATA_DESC DeviceDescription; // e.g. 'GigabitATMNet'
  961. NDIS_VAR_DATA_DESC DevSpecificInfo; // special features
  962. ULONG ulTAPISupplementaryPassThru;// reserved in NT5
  963. ULONG ulAddressModes;
  964. ULONG ulNumAddresses;
  965. ULONG ulBearerModes;
  966. ULONG ulMaxTxRate; // bytes per second
  967. ULONG ulMinTxRate; // bytes per second
  968. ULONG ulMaxRxRate; // bytes per second
  969. ULONG ulMinRxRate; // bytes per second
  970. ULONG ulMediaModes;
  971. //
  972. // Tone/digit generation and recognition capabilities
  973. //
  974. ULONG ulGenerateToneModes;
  975. ULONG ulGenerateToneMaxNumFreq;
  976. ULONG ulGenerateDigitModes;
  977. ULONG ulMonitorToneMaxNumFreq;
  978. ULONG ulMonitorToneMaxNumEntries;
  979. ULONG ulMonitorDigitModes;
  980. ULONG ulGatherDigitsMinTimeout;// milliseconds
  981. ULONG ulGatherDigitsMaxTimeout;// milliseconds
  982. ULONG ulDevCapFlags; // Misc. capabilities
  983. ULONG ulMaxNumActiveCalls; // (This * ulMinRate) = total bandwidth (which may equal ulMaxRate)
  984. ULONG ulAnswerMode; // Effect of answering a new call when an
  985. // existing call is non-idle
  986. //
  987. // User-User info sizes allowed to accompany each operation
  988. //
  989. ULONG ulUUIAcceptSize; // bytes
  990. ULONG ulUUIAnswerSize; // bytes
  991. ULONG ulUUIMakeCallSize; // bytes
  992. ULONG ulUUIDropSize; // bytes
  993. ULONG ulUUISendUserUserInfoSize; // bytes
  994. ULONG ulUUICallInfoSize; // bytes
  995. } NDIS_CO_DEVICE_PROFILE, *PNDIS_CO_DEVICE_PROFILE;
  996. //
  997. // Structures for TCP IPSec.
  998. //
  999. typedef ULONG IPAddr, IPMask;
  1000. typedef ULONG SPI_TYPE;
  1001. typedef enum _OFFLOAD_OPERATION_E
  1002. {
  1003. AUTHENTICATE = 1,
  1004. ENCRYPT
  1005. }
  1006. OFFLOAD_OPERATION_E;
  1007. typedef struct _OFFLOAD_ALGO_INFO
  1008. {
  1009. ULONG algoIdentifier;
  1010. ULONG algoKeylen;
  1011. ULONG algoRounds;
  1012. }
  1013. OFFLOAD_ALGO_INFO,
  1014. *POFFLOAD_ALGO_INFO;
  1015. typedef enum _OFFLOAD_CONF_ALGO
  1016. {
  1017. OFFLOAD_IPSEC_CONF_NONE,
  1018. OFFLOAD_IPSEC_CONF_DES,
  1019. OFFLOAD_IPSEC_CONF_RESERVED,
  1020. OFFLOAD_IPSEC_CONF_3_DES,
  1021. OFFLOAD_IPSEC_CONF_MAX
  1022. }
  1023. OFFLOAD_CONF_ALGO;
  1024. typedef enum _OFFLOAD_INTEGRITY_ALGO
  1025. {
  1026. OFFLOAD_IPSEC_INTEGRITY_NONE,
  1027. OFFLOAD_IPSEC_INTEGRITY_MD5,
  1028. OFFLOAD_IPSEC_INTEGRITY_SHA,
  1029. OFFLOAD_IPSEC_INTEGRITY_MAX
  1030. }
  1031. OFFLOAD_INTEGRITY_ALGO;
  1032. typedef struct _OFFLOAD_SECURITY_ASSOCIATION
  1033. {
  1034. OFFLOAD_OPERATION_E Operation;
  1035. SPI_TYPE SPI;
  1036. OFFLOAD_ALGO_INFO IntegrityAlgo;
  1037. OFFLOAD_ALGO_INFO ConfAlgo;
  1038. OFFLOAD_ALGO_INFO Reserved;
  1039. }
  1040. OFFLOAD_SECURITY_ASSOCIATION,
  1041. *POFFLOAD_SECURITY_ASSOCIATION;
  1042. #define OFFLOAD_MAX_SAS 3
  1043. #define OFFLOAD_INBOUND_SA 0x0001
  1044. #define OFFLOAD_OUTBOUND_SA 0x0002
  1045. typedef struct _OFFLOAD_IPSEC_ADD_SA
  1046. {
  1047. IPAddr SrcAddr;
  1048. IPMask SrcMask;
  1049. IPAddr DestAddr;
  1050. IPMask DestMask;
  1051. ULONG Protocol;
  1052. USHORT SrcPort;
  1053. USHORT DestPort;
  1054. IPAddr SrcTunnelAddr;
  1055. IPAddr DestTunnelAddr;
  1056. USHORT Flags;
  1057. SHORT NumSAs;
  1058. OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
  1059. HANDLE OffloadHandle;
  1060. ULONG KeyLen;
  1061. UCHAR KeyMat[1];
  1062. } OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA;
  1063. typedef struct _OFFLOAD_IPSEC_DELETE_SA
  1064. {
  1065. HANDLE OffloadHandle;
  1066. } OFFLOAD_IPSEC_DELETE_SA, *POFFLOAD_IPSEC_DELETE_SA;
  1067. //
  1068. // Type to go with OID_GEN_VLAN_ID: the least significant 12 bits are
  1069. // used as the VLAN ID (VID) per IEEE 802.1Q. Higher order bits are
  1070. // reserved and must be set to 0.
  1071. //
  1072. typedef ULONG NDIS_VLAN_ID;
  1073. //
  1074. // Medium the Ndis Driver is running on (OID_GEN_MEDIA_SUPPORTED/ OID_GEN_MEDIA_IN_USE).
  1075. //
  1076. typedef enum _NDIS_MEDIUM
  1077. {
  1078. NdisMedium802_3,
  1079. NdisMedium802_5,
  1080. NdisMediumFddi,
  1081. NdisMediumWan,
  1082. NdisMediumLocalTalk,
  1083. NdisMediumDix, // defined for convenience, not a real medium
  1084. NdisMediumArcnetRaw,
  1085. NdisMediumArcnet878_2,
  1086. NdisMediumAtm,
  1087. NdisMediumWirelessWan,
  1088. NdisMediumIrda,
  1089. NdisMediumBpc,
  1090. NdisMediumCoWan,
  1091. NdisMedium1394,
  1092. NdisMediumMax // Not a real medium, defined as an upper-bound
  1093. } NDIS_MEDIUM, *PNDIS_MEDIUM;
  1094. //
  1095. // Physical Medium Type definitions. Used with OID_GEN_PHYSICAL_MEDIUM.
  1096. //
  1097. typedef enum _NDIS_PHYSICAL_MEDIUM
  1098. {
  1099. NdisPhysicalMediumUnspecified,
  1100. NdisPhysicalMediumWirelessLan,
  1101. NdisPhysicalMediumCableModem,
  1102. NdisPhysicalMediumPhoneLine,
  1103. NdisPhysicalMediumPowerLine,
  1104. NdisPhysicalMediumDSL, // includes ADSL and UADSL (G.Lite)
  1105. NdisPhysicalMediumFibreChannel,
  1106. NdisPhysicalMedium1394,
  1107. NdisPhysicalMediumWirelessWan,
  1108. NdisPhysicalMediumMax // Not a real physical type, defined as an upper-bound
  1109. } NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM;
  1110. //
  1111. // Protocol types supported by ndis. These values need to be consistent with ADDRESS_TYPE_XXX defined in TDI.H
  1112. //
  1113. #define NDIS_PROTOCOL_ID_DEFAULT 0x00
  1114. #define NDIS_PROTOCOL_ID_TCP_IP 0x02
  1115. #define NDIS_PROTOCOL_ID_IPX 0x06
  1116. #define NDIS_PROTOCOL_ID_NBF 0x07
  1117. #define NDIS_PROTOCOL_ID_MAX 0x0F
  1118. #define NDIS_PROTOCOL_ID_MASK 0x0F
  1119. //
  1120. // The following is used with OID_GEN_TRANSPORT_HEADER_OFFSET to indicate the length of the layer-2 header
  1121. // for packets sent by a particular protocol.
  1122. //
  1123. typedef struct _TRANSPORT_HEADER_OFFSET
  1124. {
  1125. USHORT ProtocolType; // The protocol that is sending this OID (NDIS_PROTOCOL_ID_XXX above)
  1126. USHORT HeaderOffset; // The header offset
  1127. } TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;
  1128. //
  1129. // The structures below need to be consistent with TRANSPORT_ADDRESS structures in TDI.H
  1130. //
  1131. typedef struct _NETWORK_ADDRESS
  1132. {
  1133. USHORT AddressLength; // length in bytes of Address[] in this
  1134. USHORT AddressType; // type of this address (NDIS_PROTOCOL_ID_XXX above)
  1135. UCHAR Address[1]; // actually AddressLength bytes long
  1136. } NETWORK_ADDRESS, *PNETWORK_ADDRESS;
  1137. //
  1138. // The following is used with OID_GEN_NETWORK_LAYER_ADDRESSES to set network layer addresses on an interface
  1139. //
  1140. typedef struct _NETWORK_ADDRESS_LIST
  1141. {
  1142. LONG AddressCount; // number of addresses following
  1143. USHORT AddressType; // type of this address (NDIS_PROTOCOL_ID_XXX above)
  1144. NETWORK_ADDRESS Address[1]; // actually AddressCount elements long
  1145. } NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST;
  1146. //
  1147. // IP address - This must remain consistent with TDI_ADDRESS_IP in tdi.h
  1148. //
  1149. typedef struct _NETWORK_ADDRESS_IP
  1150. {
  1151. USHORT sin_port;
  1152. ULONG in_addr;
  1153. UCHAR sin_zero[8];
  1154. } NETWORK_ADDRESS_IP, *PNETWORK_ADDRESS_IP;
  1155. #define NETWORK_ADDRESS_LENGTH_IP sizeof (NETWORK_ADDRESS_IP)
  1156. //
  1157. // IPX address - This must remain consistent with TDI_ADDRESS_IPX in tdi.h.
  1158. //
  1159. typedef struct _NETWORK_ADDRESS_IPX
  1160. {
  1161. ULONG NetworkAddress;
  1162. UCHAR NodeAddress[6];
  1163. USHORT Socket;
  1164. } NETWORK_ADDRESS_IPX, *PNETWORK_ADDRESS_IPX;
  1165. #define NETWORK_ADDRESS_LENGTH_IPX sizeof (NETWORK_ADDRESS_IPX)
  1166. //
  1167. // Hardware status codes (OID_GEN_HARDWARE_STATUS).
  1168. //
  1169. typedef enum _NDIS_HARDWARE_STATUS
  1170. {
  1171. NdisHardwareStatusReady,
  1172. NdisHardwareStatusInitializing,
  1173. NdisHardwareStatusReset,
  1174. NdisHardwareStatusClosing,
  1175. NdisHardwareStatusNotReady
  1176. } NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
  1177. //
  1178. // this is the type passed in the OID_GEN_GET_TIME_CAPS request
  1179. //
  1180. typedef struct _GEN_GET_TIME_CAPS
  1181. {
  1182. ULONG Flags; // Bits defined below
  1183. ULONG ClockPrecision;
  1184. } GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;
  1185. #define READABLE_LOCAL_CLOCK 0x00000001
  1186. #define CLOCK_NETWORK_DERIVED 0x00000002
  1187. #define CLOCK_PRECISION 0x00000004
  1188. #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
  1189. #define TIMED_SEND_CAPABLE 0x00000010
  1190. #define TIME_STAMP_CAPABLE 0x00000020
  1191. //
  1192. // this is the type passed in the OID_GEN_GET_NETCARD_TIME request
  1193. //
  1194. typedef struct _GEN_GET_NETCARD_TIME
  1195. {
  1196. ULONGLONG ReadTime;
  1197. } GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;
  1198. //
  1199. // NDIS PnP routines and definitions.
  1200. //
  1201. typedef struct _NDIS_PM_PACKET_PATTERN
  1202. {
  1203. ULONG Priority; // Importance of the given pattern.
  1204. ULONG Reserved; // Context information for transports.
  1205. ULONG MaskSize; // Size in bytes of the pattern mask.
  1206. ULONG PatternOffset; // Offset from beginning of this
  1207. // structure to the pattern bytes.
  1208. ULONG PatternSize; // Size in bytes of the pattern.
  1209. ULONG PatternFlags; // Flags (TBD).
  1210. } NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN;
  1211. //
  1212. // The following structure defines the device power states.
  1213. //
  1214. typedef enum _NDIS_DEVICE_POWER_STATE
  1215. {
  1216. NdisDeviceStateUnspecified = 0,
  1217. NdisDeviceStateD0,
  1218. NdisDeviceStateD1,
  1219. NdisDeviceStateD2,
  1220. NdisDeviceStateD3,
  1221. NdisDeviceStateMaximum
  1222. } NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE;
  1223. //
  1224. // The following structure defines the wake-up capabilities of the device.
  1225. //
  1226. typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES
  1227. {
  1228. NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
  1229. NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
  1230. NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
  1231. } NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;
  1232. //
  1233. // the following flags define the -enabled- wake-up capabilities of the device
  1234. // passed in the Flags field of NDIS_PNP_CAPABILITIES structure
  1235. //
  1236. #define NDIS_DEVICE_WAKE_UP_ENABLE 0x00000001
  1237. #define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE 0x00000002
  1238. #define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE 0x00000004
  1239. //
  1240. // This structure defines general PnP capabilities of the miniport driver.
  1241. //
  1242. typedef struct _NDIS_PNP_CAPABILITIES
  1243. {
  1244. ULONG Flags;
  1245. NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities;
  1246. } NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
  1247. //
  1248. // Defines the attachment types for FDDI (OID_FDDI_ATTACHMENT_TYPE).
  1249. //
  1250. typedef enum _NDIS_FDDI_ATTACHMENT_TYPE
  1251. {
  1252. NdisFddiTypeIsolated = 1,
  1253. NdisFddiTypeLocalA,
  1254. NdisFddiTypeLocalB,
  1255. NdisFddiTypeLocalAB,
  1256. NdisFddiTypeLocalS,
  1257. NdisFddiTypeWrapA,
  1258. NdisFddiTypeWrapB,
  1259. NdisFddiTypeWrapAB,
  1260. NdisFddiTypeWrapS,
  1261. NdisFddiTypeCWrapA,
  1262. NdisFddiTypeCWrapB,
  1263. NdisFddiTypeCWrapS,
  1264. NdisFddiTypeThrough
  1265. } NDIS_FDDI_ATTACHMENT_TYPE, *PNDIS_FDDI_ATTACHMENT_TYPE;
  1266. //
  1267. // Defines the ring management states for FDDI (OID_FDDI_RING_MGT_STATE).
  1268. //
  1269. typedef enum _NDIS_FDDI_RING_MGT_STATE
  1270. {
  1271. NdisFddiRingIsolated = 1,
  1272. NdisFddiRingNonOperational,
  1273. NdisFddiRingOperational,
  1274. NdisFddiRingDetect,
  1275. NdisFddiRingNonOperationalDup,
  1276. NdisFddiRingOperationalDup,
  1277. NdisFddiRingDirected,
  1278. NdisFddiRingTrace
  1279. } NDIS_FDDI_RING_MGT_STATE, *PNDIS_FDDI_RING_MGT_STATE;
  1280. //
  1281. // Defines the Lconnection state for FDDI (OID_FDDI_LCONNECTION_STATE).
  1282. //
  1283. typedef enum _NDIS_FDDI_LCONNECTION_STATE
  1284. {
  1285. NdisFddiStateOff = 1,
  1286. NdisFddiStateBreak,
  1287. NdisFddiStateTrace,
  1288. NdisFddiStateConnect,
  1289. NdisFddiStateNext,
  1290. NdisFddiStateSignal,
  1291. NdisFddiStateJoin,
  1292. NdisFddiStateVerify,
  1293. NdisFddiStateActive,
  1294. NdisFddiStateMaintenance
  1295. } NDIS_FDDI_LCONNECTION_STATE, *PNDIS_FDDI_LCONNECTION_STATE;
  1296. //
  1297. // Defines the medium subtypes for WAN medium (OID_WAN_MEDIUM_SUBTYPE).
  1298. // Sub-medium used only by connection-oriented WAN devices
  1299. // i.e. NdisMediumWan, NdisMediumCoWan.
  1300. //
  1301. typedef enum _NDIS_WAN_MEDIUM_SUBTYPE
  1302. {
  1303. NdisWanMediumHub,
  1304. NdisWanMediumX_25,
  1305. NdisWanMediumIsdn,
  1306. NdisWanMediumSerial,
  1307. NdisWanMediumFrameRelay,
  1308. NdisWanMediumAtm,
  1309. NdisWanMediumSonet,
  1310. NdisWanMediumSW56K,
  1311. NdisWanMediumPPTP,
  1312. NdisWanMediumL2TP,
  1313. NdisWanMediumIrda,
  1314. NdisWanMediumParallel,
  1315. NdisWanMediumPppoe
  1316. } NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE;
  1317. //
  1318. // Defines the header format for WAN medium (OID_WAN_HEADER_FORMAT).
  1319. //
  1320. typedef enum _NDIS_WAN_HEADER_FORMAT
  1321. {
  1322. NdisWanHeaderNative, // src/dest based on subtype, followed by NLPID
  1323. NdisWanHeaderEthernet // emulation of ethernet header
  1324. } NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT;
  1325. //
  1326. // Defines the line quality on a WAN line (OID_WAN_QUALITY_OF_SERVICE).
  1327. //
  1328. typedef enum _NDIS_WAN_QUALITY
  1329. {
  1330. NdisWanRaw,
  1331. NdisWanErrorControl,
  1332. NdisWanReliable
  1333. } NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
  1334. //
  1335. // Defines a protocol's WAN specific capabilities (OID_WAN_PROTOCOL_CAPS).
  1336. //
  1337. typedef struct _NDIS_WAN_PROTOCOL_CAPS
  1338. {
  1339. IN ULONG Flags;
  1340. IN ULONG Reserved;
  1341. } NDIS_WAN_PROTOCOL_CAPS, *PNDIS_WAN_PROTOCOL_CAPS;
  1342. //
  1343. // Flags used in NDIS_WAN_PROTOCOL_CAPS
  1344. //
  1345. #define WAN_PROTOCOL_KEEPS_STATS 0x00000001
  1346. //
  1347. // Defines the state of a token-ring adapter (OID_802_5_CURRENT_RING_STATE).
  1348. //
  1349. typedef enum _NDIS_802_5_RING_STATE
  1350. {
  1351. NdisRingStateOpened = 1,
  1352. NdisRingStateClosed,
  1353. NdisRingStateOpening,
  1354. NdisRingStateClosing,
  1355. NdisRingStateOpenFailure,
  1356. NdisRingStateRingFailure
  1357. } NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE;
  1358. //
  1359. // Defines the state of the LAN media
  1360. //
  1361. typedef enum _NDIS_MEDIA_STATE
  1362. {
  1363. NdisMediaStateConnected,
  1364. NdisMediaStateDisconnected
  1365. } NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
  1366. //
  1367. // The following is set on a per-packet basis as OOB data with NdisClass802_3Priority
  1368. //
  1369. typedef ULONG Priority_802_3; // 0-7 priority levels
  1370. //
  1371. // The following structure is used to query OID_GEN_CO_LINK_SPEED and
  1372. // OID_GEN_CO_MINIMUM_LINK_SPEED. The first OID will return the current
  1373. // link speed of the adapter. The second will return the minimum link speed
  1374. // the adapter is capable of.
  1375. //
  1376. typedef struct _NDIS_CO_LINK_SPEED
  1377. {
  1378. ULONG Outbound;
  1379. ULONG Inbound;
  1380. } NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED;
  1381. #ifndef _NDIS_
  1382. typedef int NDIS_STATUS, *PNDIS_STATUS;
  1383. #endif
  1384. //
  1385. // Structure to be used for OID_GEN_SUPPORTED_GUIDS.
  1386. // This structure describes an OID to GUID mapping.
  1387. // Or a Status to GUID mapping.
  1388. // When ndis receives a request for a give GUID it will
  1389. // query the miniport with the supplied OID.
  1390. //
  1391. typedef struct _NDIS_GUID
  1392. {
  1393. GUID Guid;
  1394. union
  1395. {
  1396. NDIS_OID Oid;
  1397. NDIS_STATUS Status;
  1398. };
  1399. ULONG Size; // Size of the data element. If the GUID
  1400. // represents an array then this is the
  1401. // size of an element in the array.
  1402. // This is -1 for strings.
  1403. ULONG Flags;
  1404. } NDIS_GUID, *PNDIS_GUID;
  1405. #define fNDIS_GUID_TO_OID 0x00000001
  1406. #define fNDIS_GUID_TO_STATUS 0x00000002
  1407. #define fNDIS_GUID_ANSI_STRING 0x00000004
  1408. #define fNDIS_GUID_UNICODE_STRING 0x00000008
  1409. #define fNDIS_GUID_ARRAY 0x00000010
  1410. #define fNDIS_GUID_ALLOW_READ 0x00000020
  1411. #define fNDIS_GUID_ALLOW_WRITE 0x00000040
  1412. //
  1413. // Ndis Packet Filter Bits (OID_GEN_CURRENT_PACKET_FILTER).
  1414. //
  1415. #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
  1416. #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
  1417. #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
  1418. #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
  1419. #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
  1420. #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
  1421. #define NDIS_PACKET_TYPE_SMT 0x00000040
  1422. #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
  1423. #define NDIS_PACKET_TYPE_GROUP 0x00001000
  1424. #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
  1425. #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
  1426. #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
  1427. //
  1428. // Ndis Token-Ring Ring Status Codes (OID_802_5_CURRENT_RING_STATUS).
  1429. //
  1430. #define NDIS_RING_SIGNAL_LOSS 0x00008000
  1431. #define NDIS_RING_HARD_ERROR 0x00004000
  1432. #define NDIS_RING_SOFT_ERROR 0x00002000
  1433. #define NDIS_RING_TRANSMIT_BEACON 0x00001000
  1434. #define NDIS_RING_LOBE_WIRE_FAULT 0x00000800
  1435. #define NDIS_RING_AUTO_REMOVAL_ERROR 0x00000400
  1436. #define NDIS_RING_REMOVE_RECEIVED 0x00000200
  1437. #define NDIS_RING_COUNTER_OVERFLOW 0x00000100
  1438. #define NDIS_RING_SINGLE_STATION 0x00000080
  1439. #define NDIS_RING_RING_RECOVERY 0x00000040
  1440. //
  1441. // Ndis protocol option bits (OID_GEN_PROTOCOL_OPTIONS).
  1442. //
  1443. #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
  1444. #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
  1445. #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
  1446. #define NDIS_PROT_OPTION_SEND_RESTRICTED 0x00000008
  1447. //
  1448. // Ndis MAC option bits (OID_GEN_MAC_OPTIONS).
  1449. //
  1450. #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
  1451. #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
  1452. #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
  1453. #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
  1454. #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
  1455. #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
  1456. #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
  1457. #define NDIS_MAC_OPTION_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00000080
  1458. #define NDIS_MAC_OPTION_RECEIVE_AT_DPC 0x00000100
  1459. #define NDIS_MAC_OPTION_8021Q_VLAN 0x00000200
  1460. #define NDIS_MAC_OPTION_RESERVED 0x80000000
  1461. //
  1462. // NDIS media capabilities bits (OID_GEN_MEDIA_CAPABILITIES).
  1463. //
  1464. #define NDIS_MEDIA_CAP_TRANSMIT 0x00000001 // Supports sending data
  1465. #define NDIS_MEDIA_CAP_RECEIVE 0x00000002 // Supports receiving data
  1466. //
  1467. // NDIS MAC option bits for OID_GEN_CO_MAC_OPTIONS.
  1468. //
  1469. #define NDIS_CO_MAC_OPTION_DYNAMIC_LINK_SPEED 0x00000001
  1470. //
  1471. // The following is set on a per-packet basis as OOB data with NdisClassIrdaPacketInfo
  1472. // This is the per-packet info specified on a per-packet basis
  1473. //
  1474. typedef struct _NDIS_IRDA_PACKET_INFO
  1475. {
  1476. ULONG ExtraBOFs;
  1477. ULONG MinTurnAroundTime;
  1478. } NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO;
  1479. #ifdef WIRELESS_WAN
  1480. //
  1481. // Wireless WAN structure definitions
  1482. //
  1483. //
  1484. // currently defined Wireless network subtypes
  1485. //
  1486. typedef enum _NDIS_WW_NETWORK_TYPE
  1487. {
  1488. NdisWWGeneric,
  1489. NdisWWMobitex,
  1490. NdisWWPinpoint,
  1491. NdisWWCDPD,
  1492. NdisWWArdis,
  1493. NdisWWDataTAC,
  1494. NdisWWMetricom,
  1495. NdisWWGSM,
  1496. NdisWWCDMA,
  1497. NdisWWTDMA,
  1498. NdisWWAMPS,
  1499. NdisWWInmarsat,
  1500. NdisWWpACT,
  1501. NdisWWFlex,
  1502. NdisWWIDEN
  1503. } NDIS_WW_NETWORK_TYPE;
  1504. //
  1505. // currently defined header formats
  1506. //
  1507. typedef enum _NDIS_WW_HEADER_FORMAT
  1508. {
  1509. NdisWWDIXEthernetFrames,
  1510. NdisWWMPAKFrames,
  1511. NdisWWRDLAPFrames,
  1512. NdisWWMDC4800Frames,
  1513. NdisWWNCLFrames
  1514. } NDIS_WW_HEADER_FORMAT;
  1515. //
  1516. // currently defined encryption types
  1517. //
  1518. typedef enum _NDIS_WW_ENCRYPTION_TYPE
  1519. {
  1520. NdisWWUnknownEncryption = -1,
  1521. NdisWWNoEncryption,
  1522. NdisWWDefaultEncryption,
  1523. NdisWWDESEncryption,
  1524. NdisWWRC2Encryption,
  1525. NdisWWRC4Encryption,
  1526. NdisWWRC5Encryption
  1527. } NDIS_WW_ENCRYPTION_TYPE, *PNDIS_WW_ENCRYPTION_TYPE;
  1528. typedef enum _WW_ADDRESS_FORMAT
  1529. {
  1530. WW_IEEE_ADDRESS = 0,
  1531. WW_MOBITEX_MAN_ADDRESS,
  1532. WW_DATATAC_RDLAP_ADDRESS,
  1533. WW_DATATAC_MDC4800_ADDRESS,
  1534. WW_DATATAC_RESERVED,
  1535. WW_IPv4_ADDRESS,
  1536. WW_IPv6_ADDRESS,
  1537. WW_PROPRIETARY_ADDRESS,
  1538. } WW_ADDRESS_FORMAT;
  1539. typedef enum _WW_GEN_SUM_EXCEPTION
  1540. {
  1541. SIM_STATUS_OK = 0,
  1542. SIM_STATUS_ERROR,
  1543. SIM_STATUS_MISSING,
  1544. SIM_STATUS_NO_RESPONSE,
  1545. SIM_STATUS_REMOVED,
  1546. SIM_STATUS_CRYPT_ERROR,
  1547. SIM_STATUS_AUTH_ERROR,
  1548. SIM_STATUS_NEED_PIN,
  1549. SIM_STATUS_NEED_PUK,
  1550. SIM_STATUS_WRONG,
  1551. } WW_GEN_SIM_EXCEPTION;
  1552. //
  1553. // OID_WW_GEN_INDICATION_REQUEST
  1554. //
  1555. typedef struct _NDIS_WW_INDICATION_REQUEST
  1556. {
  1557. NDIS_OID Oid; // IN
  1558. ULONG uIndicationFlag; // IN
  1559. ULONG uApplicationToken; // IN OUT
  1560. HANDLE hIndicationHandle; // IN OUT
  1561. INT iPollingInterval; // IN OUT
  1562. NDIS_VAR_DATA_DESC InitialValue; // IN OUT
  1563. NDIS_VAR_DATA_DESC OIDIndicationValue; // OUT - only valid after indication
  1564. NDIS_VAR_DATA_DESC TriggerValue; // IN
  1565. } NDIS_WW_INDICATION_REQUEST, *PNDIS_WW_INDICATION_REQUEST;
  1566. #define OID_INDICATION_REQUEST_ENABLE 0x0000
  1567. #define OID_INDICATION_REQUEST_CANCEL 0x0001
  1568. //
  1569. // OID_WW_GEN_DEVICE_INFO
  1570. //
  1571. typedef struct _WW_DEVICE_INFO
  1572. {
  1573. NDIS_VAR_DATA_DESC Manufacturer;
  1574. NDIS_VAR_DATA_DESC ModelNum;
  1575. NDIS_VAR_DATA_DESC SWVersionNum;
  1576. NDIS_VAR_DATA_DESC SerialNum;
  1577. } WW_DEVICE_INFO, *PWW_DEVICE_INFO;
  1578. //
  1579. // OID_WW_GEN_OPERATION_MODE
  1580. //
  1581. typedef INT WW_OPERATION_MODE; // 0 = Normal mode
  1582. // 1 = Power saving mode
  1583. // -1 = mode unknown
  1584. //
  1585. // OID_WW_GEN_LOCK_STATUS
  1586. //
  1587. typedef INT WW_LOCK_STATUS; // 0 = unlocked
  1588. // 1 = locked
  1589. // -1 = unknown lock status
  1590. //
  1591. // OID_WW_GEN_DISABLE_TRANSMITTER
  1592. //
  1593. typedef INT WW_DISABLE_TRANSMITTER; // 0 = transmitter enabled
  1594. // 1 = transmitter disabled
  1595. // -1 = unknown value
  1596. //
  1597. // OID_WW_GEN_NETWORK_ID
  1598. //
  1599. typedef NDIS_VAR_DATA_DESC WW_NETWORK_ID;
  1600. //
  1601. // OID_WW_GEN_PERMANENT_ADDRESS
  1602. //
  1603. typedef NDIS_VAR_DATA_DESC WW_PERMANENT_ADDRESS;
  1604. //
  1605. // OID_WW_GEN_CURRENT_ADDRESS
  1606. //
  1607. typedef struct _WW_CURRENT_ADDRESS
  1608. {
  1609. NDIS_WW_HEADER_FORMAT Format;
  1610. NDIS_VAR_DATA_DESC Address;
  1611. } WW_CURRENT_ADDRESS, *PWW_CURRENT_ADDRESS;
  1612. //
  1613. // OID_WW_GEN_SUSPEND_DRIVER
  1614. //
  1615. typedef BOOLEAN WW_SUSPEND_DRIVER; // 0 = driver operational
  1616. // 1 = driver suspended
  1617. //
  1618. // OID_WW_GEN_BASESTATION_ID
  1619. //
  1620. typedef NDIS_VAR_DATA_DESC WW_BASESTATION_ID;
  1621. //
  1622. // OID_WW_GEN_CHANNEL_ID
  1623. //
  1624. typedef NDIS_VAR_DATA_DESC WW_CHANNEL_ID;
  1625. //
  1626. // OID_WW_GEN_ENCRYPTION_STATE
  1627. //
  1628. typedef BOOLEAN WW_ENCRYPTION_STATE; // 0 = if encryption is disabled
  1629. // 1 = if encryption is enabled
  1630. //
  1631. // OID_WW_GEN_CHANNEL_QUALITY
  1632. //
  1633. typedef INT WW_CHANNEL_QUALITY; // 0 = Not in network contact,
  1634. // 1-100 = Quality of Channel (100 is highest quality).
  1635. // -1 = channel quality is unknown
  1636. //
  1637. // OID_WW_GEN_REGISTRATION_STATUS
  1638. //
  1639. typedef INT WW_REGISTRATION_STATUS; // 0 = Registration denied
  1640. // 1 = Registration pending
  1641. // 2 = Registered
  1642. // -1 = unknown registration status
  1643. //
  1644. // OID_WW_GEN_RADIO_LINK_SPEED
  1645. //
  1646. typedef ULONG WW_RADIO_LINK_SPEED; // Bits per second.
  1647. //
  1648. // OID_WW_GEN_LATENCY
  1649. //
  1650. typedef ULONG WW_LATENCY; // milliseconds
  1651. //
  1652. // OID_WW_GEN_BATTERY_LEVEL
  1653. //
  1654. typedef INT WW_BATTERY_LEVEL; // 0-100 = battery level in percentage
  1655. // (100=fully charged)
  1656. // -1 = unknown battery level.
  1657. //
  1658. // OID_WW_GEN_EXTERNAL_POWER
  1659. //
  1660. typedef INT WW_EXTERNAL_POWER; // 0 = no external power connected
  1661. // 1 = external power connected
  1662. // -1 = unknown
  1663. //
  1664. // Ping Address structure
  1665. //
  1666. typedef struct _WW_PING_ADDRESS
  1667. {
  1668. WW_ADDRESS_FORMAT Format; // IN
  1669. NDIS_VAR_DATA_DESC TargetAddress; // IN
  1670. UINT uTime; // OUT in milleseconds
  1671. } WW_PING_ADDRESS;
  1672. //
  1673. // RSSI structure
  1674. //
  1675. typedef struct _WW_RECEIVE_SIGNAL_STRENGTH_INDICATOR
  1676. {
  1677. INT iDecibels; // value in DB
  1678. INT iFactor; // power of 10
  1679. } WW_RECEIVE_SIGNAL_STRENGTH_INDICATOR;
  1680. //
  1681. // SIM status structure
  1682. //
  1683. typedef struct _WW_SIM_STATUS
  1684. {
  1685. BOOLEAN bHasSIM; // TRUE = SIM required
  1686. BOOLEAN bBlocked; // TRUE = SIM PIN access blocked
  1687. BOOLEAN bLocked; // TRUE = PIN need to access device
  1688. BOOLEAN bInitialized; // TRUE = SIM initialized
  1689. UINT uCountdown; // = remaining number of attempt to
  1690. // enter correct PIN
  1691. } WW_SIM_STATUS;
  1692. //
  1693. // enable SIM PIN structure
  1694. //
  1695. typedef struct _WW_ENABLE_SIM_PIN
  1696. {
  1697. BOOLEAN bEnabled; // TRUE = security feature of SIM enabled
  1698. NDIS_VAR_DATA_DESC CurrentPIN; // describes buffer containing PIN value
  1699. } WW_ENABLE_SIM_PIN;
  1700. //
  1701. // SIM PIN structure
  1702. //
  1703. typedef struct _WW_CHANGE_SIM_PIN
  1704. {
  1705. NDIS_VAR_DATA_DESC OldPIN; // describes buffer containing OLD PIN
  1706. NDIS_VAR_DATA_DESC NewPIN; // describes buffer containing new PIN
  1707. } WW_CHANGE_SIM_PIN;
  1708. //
  1709. // new change SIM PUK structure
  1710. //
  1711. typedef NDIS_VAR_DATA_DESC WW_ENABLE_SIM_PUK;
  1712. //
  1713. // OID_WW_MET_FUNCTION
  1714. //
  1715. typedef NDIS_VAR_DATA_DESC WW_MET_FUNCTION;
  1716. //
  1717. // OID_WW_TAC_COMPRESSION
  1718. //
  1719. typedef BOOLEAN WW_TAC_COMPRESSION; // Determines whether or not network level compression
  1720. // is being used.
  1721. //
  1722. // OID_WW_TAC_SET_CONFIG
  1723. //
  1724. // The DataTAC OID that referenced this object has been superceeded. The
  1725. // definition is still included for historical purposes only and should not
  1726. // be used
  1727. //
  1728. typedef struct _WW_TAC_SETCONFIG
  1729. {
  1730. NDIS_VAR_DATA_DESC RCV_MODE; // Select confirmed/unconfirmed
  1731. // receive mode
  1732. NDIS_VAR_DATA_DESC TX_CONTROL; // Enable or Disable transmitter
  1733. NDIS_VAR_DATA_DESC RX_CONTROL; // Enable or disable radio in
  1734. // the modem
  1735. NDIS_VAR_DATA_DESC FLOW_CONTROL; // Set flow control between DTE
  1736. // and DCE
  1737. NDIS_VAR_DATA_DESC RESET_CNF; // Reset configuration to
  1738. // default
  1739. NDIS_VAR_DATA_DESC READ_CNF; // Read the current
  1740. // configuration
  1741. } WW_TAC_SETCONFIG, *PWW_TAC_SETCONFIG;
  1742. //
  1743. // OID_WW_TAC_GET_STATUS
  1744. //
  1745. // The DataTAC OID that referenced this object has been superceeded. The
  1746. // definition is still included for historical purposes only and should not
  1747. // be used
  1748. //
  1749. typedef struct _WW_TAC_GETSTATUS
  1750. {
  1751. BOOLEAN Action; // Set = Execute command.
  1752. NDIS_VAR_DATA_DESC Command;
  1753. NDIS_VAR_DATA_DESC Option;
  1754. NDIS_VAR_DATA_DESC Response; // The response to the requested command
  1755. // - max. length of string is 256 octets.
  1756. } WW_TAC_GETSTATUS, *PWW_TAC_GETSTATUS;
  1757. //
  1758. // OID_WW_TAC_USER_HEADER
  1759. //
  1760. typedef NDIS_VAR_DATA_DESC WW_TAC_USERHEADER; // This will hold the user header - Max. 64 octets.
  1761. // August 25, 1998 @14:16 EDT by Emil Sturniolo - WRQ
  1762. // added new DataTAC get response structure
  1763. typedef struct _WW_TAC_GET_RESPONSE
  1764. {
  1765. UINT SDUTag; // previousl assigned token
  1766. NDIS_VAR_DATA_DESC Response; // response - max 2048 octets
  1767. } WW_TAC_GET_RESPONSE;
  1768. //
  1769. // DataTAC disable receiver structure
  1770. //
  1771. typedef INT WW_TAC_DISABLE_RECEIVER; // 0 = receiver enabled
  1772. // 1 = receiver disabled
  1773. // -1 = state of recevier unknown
  1774. //
  1775. // DataTAC antenna mode structure
  1776. //
  1777. typedef INT WW_TAC_ANTENNA_MODE; // 0 = Automatic Antenna selection
  1778. // 1 = Always use primary antenna
  1779. // 2 = Always use secondary antenna
  1780. // -1 = Antenna algorithm unknown
  1781. //
  1782. // DataTAC get response structure
  1783. //
  1784. typedef INT WW_TAC_FLUSH_DATA; // 1 = flush buffered data destine to net
  1785. // 2 = flush buffered data received from net
  1786. // 3 = flush all buffered data
  1787. //
  1788. // DataTAC shutdown device structure
  1789. //
  1790. typedef INT WW_TAC_SHUTDOWN_DEVICE; // 0 = device enabled
  1791. // 1 = device disabled
  1792. // -1 = state of device unknown
  1793. //
  1794. // DataTAC transmitter keyed structure
  1795. //
  1796. typedef BOOLEAN WW_TAC_TRANSMITTER_KEYED;
  1797. //
  1798. // added new DataTAC system table structure
  1799. //
  1800. typedef struct _WW_TAC_SYSTEM_TABLE
  1801. {
  1802. UINT SystemCount;
  1803. UCHAR ContryTable[32];
  1804. UCHAR PrefixTable[32];
  1805. UCHAR IDTable[32];
  1806. } WW_TAC_SYSTEM_TABLE;
  1807. //
  1808. // added new DataTAC channel table structure
  1809. //
  1810. typedef struct _WW_TAC_CHANNEL_TABLE
  1811. {
  1812. UINT ChannelCount;
  1813. UCHAR ChannelTable[64];
  1814. UCHAR AttrTable[64];
  1815. } WW_TAC_CHANNEL_TABLE;
  1816. //
  1817. // added new DataTAC statistics structure
  1818. //
  1819. typedef NDIS_VAR_DATA_DESC WW_TAC_STATISTICS;
  1820. //
  1821. // OID_WW_ARD_SNDCP
  1822. //
  1823. // The ARDIS OIDs that referenced these object have been deprecated and merged
  1824. // with the new DataTAC objects. Their definition are still included for
  1825. // historical purposes only and should not be used.
  1826. //
  1827. typedef struct _WW_ARD_SNDCP
  1828. {
  1829. NDIS_VAR_DATA_DESC Version; // The version of SNDCP protocol supported.
  1830. INT BlockSize; // The block size used for SNDCP
  1831. INT Window; // The window size used in SNDCP
  1832. } WW_ARD_SNDCP, *PWW_ARD_SNDCP;
  1833. //
  1834. // OID_WW_ARD_TMLY_MSG
  1835. //
  1836. typedef BOOLEAN WW_ARD_CHANNEL_STATUS; // The current status of the inbound RF Channel.
  1837. //
  1838. // OID_WW_ARD_DATAGRAM
  1839. //
  1840. typedef struct _WW_ARD_DATAGRAM
  1841. {
  1842. BOOLEAN LoadLevel; // Byte that contains the load level info.
  1843. INT SessionTime; // Datagram session time remaining.
  1844. NDIS_VAR_DATA_DESC HostAddr; // Host address.
  1845. NDIS_VAR_DATA_DESC THostAddr; // Test host address.
  1846. } WW_ARD_DATAGRAM, *PWW_ARD_DATAGRAM;
  1847. //
  1848. // OID_WW_CDPD_SPNI
  1849. //
  1850. typedef struct _WW_CDPD_SPNI
  1851. {
  1852. ULONG SPNI[10]; //10 16-bit service provider network IDs
  1853. INT OperatingMode; // 0 = ignore SPNI,
  1854. // 1 = require SPNI from list,
  1855. // 2 = prefer SPNI from list.
  1856. // 3 = exclude SPNI from list.
  1857. } WW_CDPD_SPNI, *PWW_CDPD_SPNI;
  1858. //
  1859. // OID_WW_CDPD_WASI
  1860. //
  1861. typedef struct _WW_CDPD_WIDE_AREA_SERVICE_ID
  1862. {
  1863. ULONG WASI[10]; //10 16-bit wide area service IDs
  1864. INT OperatingMode; // 0 = ignore WASI,
  1865. // 1 = Require WASI from list,
  1866. // 2 = prefer WASI from list
  1867. // 3 = exclude WASI from list.
  1868. } WW_CDPD_WIDE_AREA_SERVICE_ID, *PWW_CDPD_WIDE_AREA_SERVICE_ID;
  1869. //
  1870. // OID_WW_CDPD_AREA_COLOR
  1871. //
  1872. typedef INT WW_CDPD_AREA_COLOR;
  1873. //
  1874. // OID_WW_CDPD_TX_POWER_LEVEL
  1875. //
  1876. typedef ULONG WW_CDPD_TX_POWER_LEVEL;
  1877. //
  1878. // OID_WW_CDPD_EID
  1879. //
  1880. typedef NDIS_VAR_DATA_DESC WW_CDPD_EID;
  1881. //
  1882. // OID_WW_CDPD_HEADER_COMPRESSION
  1883. //
  1884. typedef INT WW_CDPD_HEADER_COMPRESSION; // 0 = no header compression,
  1885. // 1 = always compress headers,
  1886. // 2 = compress headers if MD-IS does
  1887. // -1 = unknown
  1888. //
  1889. // OID_WW_CDPD_DATA_COMPRESSION
  1890. //
  1891. typedef INT WW_CDPD_DATA_COMPRESSION; // 0 = no data compression,
  1892. // 1 = data compression enabled
  1893. // -1 = unknown
  1894. //
  1895. // OID_WW_CDPD_CHANNEL_SELECT
  1896. //
  1897. typedef struct _WW_CDPD_CHANNEL_SELECT
  1898. {
  1899. ULONG ChannelID; // channel number
  1900. ULONG fixedDuration; // duration in seconds
  1901. } WW_CDPD_CHANNEL_SELECT, *PWW_CDPD_CHANNEL_SELECT;
  1902. //
  1903. // OID_WW_CDPD_CHANNEL_STATE
  1904. //
  1905. typedef enum _WW_CDPD_CHANNEL_STATE
  1906. {
  1907. CDPDChannelNotAvail,
  1908. CDPDChannelScanning,
  1909. CDPDChannelInitAcquired,
  1910. CDPDChannelAcquired,
  1911. CDPDChannelSleeping,
  1912. CDPDChannelWaking,
  1913. CDPDChannelCSDialing,
  1914. CDPDChannelCSRedial,
  1915. CDPDChannelCSAnswering,
  1916. CDPDChannelCSConnected,
  1917. CDPDChannelCSSuspended
  1918. } WW_CDPD_CHANNEL_STATE, *PWW_CDPD_CHANNEL_STATE;
  1919. //
  1920. // OID_WW_CDPD_NEI
  1921. //
  1922. typedef enum _WW_CDPD_NEI_FORMAT
  1923. {
  1924. CDPDNeiIPv4,
  1925. CDPDNeiCLNP,
  1926. CDPDNeiIPv6
  1927. } WW_CDPD_NEI_FORMAT, *PWW_CDPD_NEI_FORMAT;
  1928. typedef enum _WW_CDPD_NEI_TYPE
  1929. {
  1930. CDPDNeiIndividual,
  1931. CDPDNeiMulticast,
  1932. CDPDNeiBroadcast
  1933. } WW_CDPD_NEI_TYPE;
  1934. typedef struct _WW_CDPD_NEI
  1935. {
  1936. ULONG uNeiIndex;
  1937. WW_CDPD_NEI_FORMAT NeiFormat;
  1938. WW_CDPD_NEI_TYPE NeiType;
  1939. WORD NeiGmid; // group member identifier, only
  1940. // meaningful if NeiType ==
  1941. // CDPDNeiMulticast
  1942. NDIS_VAR_DATA_DESC NeiAddress;
  1943. } WW_CDPD_NEI;
  1944. //
  1945. // OID_WW_CDPD_NEI_STATE
  1946. //
  1947. typedef enum _WW_CDPD_NEI_STATE
  1948. {
  1949. CDPDUnknown,
  1950. CDPDRegistered,
  1951. CDPDDeregistered
  1952. } WW_CDPD_NEI_STATE, *PWW_CDPD_NEI_STATE;
  1953. typedef enum _WW_CDPD_NEI_SUB_STATE
  1954. {
  1955. CDPDPending, // Registration pending
  1956. CDPDNoReason, // Registration denied - no reason given
  1957. CDPDMDISNotCapable, // Registration denied - MD-IS not capable of
  1958. // handling M-ES at this time
  1959. CDPDNEINotAuthorized, // Registration denied - NEI is not authorized to
  1960. // use this subnetwork
  1961. CDPDInsufficientAuth, // Registration denied - M-ES gave insufficient
  1962. // authentication credentials
  1963. CDPDUnsupportedAuth, // Registration denied - M-ES gave unsupported
  1964. // authentication credentials
  1965. CDPDUsageExceeded, // Registration denied - NEI has exceeded usage
  1966. // limitations
  1967. CDPDDeniedThisNetwork // Registration denied on this network, service
  1968. // may be obtained on alternate Service Provider
  1969. // network
  1970. } WW_CDPD_NEI_SUB_STATE;
  1971. typedef struct _WW_CDPD_NEI_REG_STATE
  1972. {
  1973. ULONG uNeiIndex;
  1974. WW_CDPD_NEI_STATE NeiState;
  1975. WW_CDPD_NEI_SUB_STATE NeiSubState;
  1976. } WW_CDPD_NEI_REG_STATE, *PWW_CDPD_NEI_REG_STATE;
  1977. //
  1978. // OID_WW_CDPD_SERVICE_PROVIDER_IDENTIFIER
  1979. //
  1980. typedef struct _WW_CDPD_SERVICE_PROVIDER_ID
  1981. {
  1982. ULONG SPI[10]; //10 16-bit service provider IDs
  1983. INT OperatingMode; // 0 = ignore SPI,
  1984. // 1 = require SPI from list,
  1985. // 2 = prefer SPI from list.
  1986. // 3 = SPI from list is excluded
  1987. } WW_CDPD_SERVICE_PROVIDER_ID, *PWW_CDPD_SERVICE_PROVIDER_ID;
  1988. //
  1989. // OID_WW_CDPD_SLEEP_MODE
  1990. //
  1991. typedef INT WW_CDPD_SLEEP_MODE;
  1992. //
  1993. // OID_WW_CDPD_TEI
  1994. //
  1995. typedef ULONG WW_CDPD_TEI;
  1996. //
  1997. // OID_WW_CDPD_CIRCUIT_SWITCHED
  1998. //
  1999. // The CDPD OID that referenced this object has been deprecated and superceeded
  2000. // by new discrete CDPD objects. The definition is still included for
  2001. // historical purposes only and should not be used.
  2002. //
  2003. typedef struct _WW_CDPD_CIRCUIT_SWITCHED
  2004. {
  2005. INT service_preference; // -1 = unknown,
  2006. // 0 = always use packet switched CDPD,
  2007. // 1 = always use CS CDPD via AMPS,
  2008. // 2 = always use CS CDPD via PSTN,
  2009. // 3 = use circuit switched via AMPS only
  2010. // when packet switched is not available.
  2011. // 4 = use packet switched only when circuit
  2012. // switched via AMPS is not available.
  2013. // 5 = device manuf. defined service
  2014. // preference.
  2015. // 6 = device manuf. defined service
  2016. // preference.
  2017. INT service_status; // -1 = unknown,
  2018. // 0 = packet switched CDPD,
  2019. // 1 = circuit switched CDPD via AMPS,
  2020. // 2 = circuit switched CDPD via PSTN.
  2021. INT connect_rate; // CS connection bit rate (bits per second).
  2022. // 0 = no active connection,
  2023. // -1 = unknown
  2024. // Dial code last used to dial.
  2025. NDIS_VAR_DATA_DESC dial_code[20];
  2026. ULONG sid; // Current AMPS system ID
  2027. INT a_b_side_selection; // -1 = unknown,
  2028. // 0 = no AMPS service
  2029. // 1 = AMPS "A" side channels selected
  2030. // 2 = AMPS "B" side channels selected
  2031. INT AMPS_channel; // -1= unknown
  2032. // 0 = no AMPS service.
  2033. // 1-1023 = AMPS channel number in use
  2034. ULONG action; // 0 = no action
  2035. // 1 = suspend (hangup)
  2036. // 2 = dial
  2037. // Default dial code for CS CDPD service
  2038. // encoded as specified in the CS CDPD
  2039. // implementor guidelines.
  2040. NDIS_VAR_DATA_DESC default_dial[20];
  2041. // Number for the CS CDPD network to call
  2042. // back the mobile, encoded as specified in
  2043. // the CS CDPD implementor guidelines.
  2044. NDIS_VAR_DATA_DESC call_back[20];
  2045. ULONG sid_list[10]; // List of 10 16-bit preferred AMPS
  2046. // system IDs for CS CDPD.
  2047. ULONG inactivity_timer; // Wait time after last data before dropping
  2048. // call.
  2049. // 0-65535 = inactivity time limit (seconds).
  2050. ULONG receive_timer; // secs. per CS-CDPD Implementor Guidelines.
  2051. ULONG conn_resp_timer; // secs. per CS-CDPD Implementor Guidelines.
  2052. ULONG reconn_resp_timer; // secs. per CS-CDPD Implementor Guidelines.
  2053. ULONG disconn_timer; // secs. per CS-CDPD Implementor Guidelines.
  2054. ULONG NEI_reg_timer; // secs. per CS-CDPD Implementor Guidelines.
  2055. ULONG reconn_retry_timer; // secs. per CS-CDPD Implementor Guidelines.
  2056. ULONG link_reset_timer; // secs. per CS-CDPD Implementor Guidelines.
  2057. ULONG link_reset_ack_timer; // secs. per CS-CDPD Implementor Guidelines.
  2058. ULONG n401_retry_limit; // per CS-CDPD Implementor Guidelines.
  2059. ULONG n402_retry_limit; // per CS-CDPD Implementor Guidelines.
  2060. ULONG n404_retry_limit; // per CS-CDPD Implementor Guidelines.
  2061. ULONG n405_retry_limit; // per CS-CDPD Implementor Guidelines.
  2062. } WW_CDPD_CIRCUIT_SWITCHED, *WW_PCDPD_CIRCUIT_SWITCHED;
  2063. typedef ULONG WW_CDPD_RSSI;
  2064. //
  2065. // cs-cdpd service preference structure
  2066. //
  2067. typedef INT WW_CDPD_CS_SERVICE_PREFERENCE; // 0 = use packet switched CDPD only
  2068. // 1 = use CS-CDPD via AMPS only
  2069. // 2 = use CS-CDPD via PSTN only
  2070. // 3 = use CS-CDPD via AMPS only
  2071. // when packet switched is N/A
  2072. // 4 = use packet switched CDPD only
  2073. // when CS-CDPD via AMPS is N/A
  2074. // 5 = Device manufacture defined
  2075. // service preference
  2076. // 6 = device manufacture defined
  2077. // service preference
  2078. // -1 = unknown
  2079. //
  2080. // cs-cdpd service status structure
  2081. //
  2082. typedef INT WW_CDPD_CS_SERVICE_STATUS; // 0 = Packet switched CDPD
  2083. // 1 = CS-CDPD via AMPS
  2084. // 2 = CS-CDPD via PSTN
  2085. // -1 = unknown
  2086. //
  2087. // cs-cdpd info structure
  2088. //
  2089. typedef struct _WW_CDPD_CS_INFO {
  2090. INT ConnectRage; // 0 = no active connection
  2091. // -1 = unknown
  2092. // all other values represent BPS
  2093. NDIS_VAR_DATA_DESC DialCode; // describes buffer of last dial code
  2094. UINT SID; // Current AMPS System ID
  2095. INT ABSideSelection; // 0 = no AMPS service
  2096. // 1 = AMPS "A" side channel selected
  2097. // 2 = AMPS "B" side channel selected
  2098. INT AMPSChannel; // 0 = no AMPS service
  2099. // 1-1023 = current AMPS channel
  2100. // -1 = Unknown
  2101. // all other values reserved
  2102. } WW_CDPD_CS_INFO;
  2103. //
  2104. // cs-cdpd suspend structure
  2105. //
  2106. typedef UINT WW_CDPD_CS_SUSPEND; // 0 = nop; 1 = hang up
  2107. //
  2108. // cs-cdpd default dial code structure
  2109. //
  2110. typedef NDIS_VAR_DATA_DESC WW_CDPD_DEFAULT_DIAL_CODE; // max 20 octets
  2111. //
  2112. // cs-cdpd callback structure
  2113. //
  2114. typedef struct _WW_CDPD_CS_CALLBACK
  2115. {
  2116. UINT Enabled; // 0 = disable; 1 = enable; -1 = unknown
  2117. NDIS_VAR_DATA_DESC Number; // descibes buffer contianing dial code
  2118. // max 20 octets
  2119. } WW_CDPD_CS_CALLBACK;
  2120. //
  2121. // cs-cdpd system id list structure
  2122. //
  2123. typedef struct _WW_CDPD_CS_SID_LIST
  2124. {
  2125. UINT AMPSystemId[10];
  2126. } WW_CDPD_CS_SID_LIST;
  2127. //
  2128. // cs-cdpd configuration structure
  2129. //
  2130. typedef struct _WW_CDPD_CS_CONFIGURATION
  2131. {
  2132. UINT InactivityTimer; // in seconds
  2133. UINT ReceiveTimer; // in seconds
  2134. UINT ConnResTimer; // in seconds
  2135. UINT ReconnRespTimer; // in seconds
  2136. UINT DisconnTimer; // in seconds
  2137. UINT NEIRegTimer; // in seconds
  2138. UINT ReconnRetryTimer; // in seconds
  2139. UINT LinkResetTimer; // in seconds
  2140. UINT LinkResetAckTimer; // in seconds
  2141. UINT n401RetryLimit; // per CS-CDPD Implementers guidelines
  2142. UINT n402RetryLimit; // per CS-CDPD Implementers guidelines
  2143. UINT n404RetryLimit; // per CS-CDPD Implementers guidelines
  2144. UINT n405RetryLimit; // per CS-CDPD Implementers guidelines
  2145. } WW_CDPD_CS_CONFIGURATION;
  2146. //
  2147. // OID_WW_PIN_LOC_AUTHORIZE
  2148. //
  2149. // The Pin Point OIDs that referenced the structures below have been
  2150. // deprecated from the PCCA STD-201 standard. Their definitions are still
  2151. // included for historical purposes only and should not be used.
  2152. //
  2153. typedef INT WW_PIN_AUTHORIZED; // 0 = unauthorized
  2154. // 1 = authorized
  2155. // -1 = unknown
  2156. //
  2157. // OID_WW_PIN_LAST_LOCATION
  2158. // OID_WW_PIN_LOC_FIX
  2159. //
  2160. typedef struct _WW_PIN_LOCATION
  2161. {
  2162. INT Latitude; // Latitude in hundredths of a second
  2163. INT Longitude; // Longitude in hundredths of a second
  2164. INT Altitude; // Altitude in feet
  2165. INT FixTime; // Time of the location fix, since midnight, local time (of the
  2166. // current day), in tenths of a second
  2167. INT NetTime; // Current local network time of the current day, since midnight,
  2168. // in tenths of a second
  2169. INT LocQuality; // 0-100 = location quality
  2170. INT LatReg; // Latitude registration offset, in hundredths of a second
  2171. INT LongReg; // Longitude registration offset, in hundredths of a second
  2172. INT GMTOffset; // Offset in minutes of the local time zone from GMT
  2173. } WW_PIN_LOCATION, *PWW_PIN_LOCATION;
  2174. //
  2175. // The following is set on a per-packet basis as OOB data with NdisClassWirelessWanMbxMailbox
  2176. //
  2177. typedef ULONG WW_MBX_MAILBOX_FLAG; // 1 = set mailbox flag, 0 = do not set mailbox flag
  2178. //
  2179. // OID_WW_MBX_SUBADDR
  2180. //
  2181. typedef struct _WW_MBX_PMAN
  2182. {
  2183. BOOLEAN ACTION; // 0 = Login PMAN, 1 = Logout PMAN
  2184. ULONG MAN;
  2185. UCHAR PASSWORD[8]; // Password should be null for Logout and indications.
  2186. // Maximum length of password is 8 chars.
  2187. } WW_MBX_PMAN, *PWW_MBX_PMAN;
  2188. //
  2189. // OID_WW_MBX_FLEXLIST
  2190. //
  2191. typedef struct _WW_MBX_FLEXLIST
  2192. {
  2193. INT count; // Number of MAN entries used.
  2194. // -1=unknown.
  2195. ULONG MAN[7]; // List of MANs.
  2196. } WW_MBX_FLEXLIST;
  2197. //
  2198. // OID_WW_MBX_GROUPLIST
  2199. //
  2200. typedef struct _WW_MBX_GROUPLIST
  2201. {
  2202. INT count; // Number of MAN entries used.
  2203. // -1=unknown.
  2204. ULONG MAN[15]; // List of MANs.
  2205. } WW_MBX_GROUPLIST;
  2206. //
  2207. // OID_WW_MBX_TRAFFIC_AREA
  2208. //
  2209. typedef enum _WW_MBX_TRAFFIC_AREA
  2210. {
  2211. unknown_traffic_area, // The driver has no information about the current traffic area.
  2212. in_traffic_area, // Mobile unit has entered a subscribed traffic area.
  2213. in_auth_traffic_area, // Mobile unit is outside traffic area but is authorized.
  2214. unauth_traffic_area // Mobile unit is outside traffic area but is un-authorized.
  2215. } WW_MBX_TRAFFIC_AREA;
  2216. //
  2217. // OID_WW_MBX_LIVE_DIE
  2218. //
  2219. typedef INT WW_MBX_LIVE_DIE; // 0 = DIE last received
  2220. // 1 = LIVE last received
  2221. // -1 = unknown
  2222. //
  2223. // OID_WW_MBX_TEMP_DEFAULTLIST
  2224. //
  2225. typedef struct _WW_MBX_CHANNEL_PAIR
  2226. {
  2227. ULONG Mobile_Tx;
  2228. ULONG Mobile_Rx;
  2229. } WW_MBX_CHANNEL_PAIR, *PWW_MBX_CHANNEL_PAIR;
  2230. typedef struct _WW_MBX_TEMPDEFAULTLIST
  2231. {
  2232. ULONG Length;
  2233. WW_MBX_CHANNEL_PAIR ChannelPair[1];
  2234. } WW_MBX_TEMPDEFAULTLIST, *WW_PMBX_TEMPDEFAULTLIST;
  2235. #endif // WIRELESS_WAN
  2236. //
  2237. //
  2238. // Base types that were redefined for BPC
  2239. //
  2240. // BPC_FILETIME is used exactly like FILETIME in Win32
  2241. //
  2242. // BPC_HANDLE is opaque to everything except the Miniport
  2243. //
  2244. typedef struct _BPC_FILETIME
  2245. {
  2246. ULONG dwLowDateTime;
  2247. ULONG dwHighDateTime;
  2248. } BPC_FILETIME, *PBPC_FILETIME;
  2249. typedef PVOID BPC_HANDLE;
  2250. //
  2251. // BPC Extension Globals
  2252. //
  2253. //
  2254. #define BPC_MIN_DIMENSION 1
  2255. #define BPC_MAX_BUFFER_SIZE 64
  2256. #define BPC_MIN_BUFFER_SIZE 4
  2257. #define BPC_DEVICE_ANY ((BPC_HANDLE) 0xFFFFFFFF)
  2258. //
  2259. // Buffer indicate reason codes
  2260. //
  2261. //
  2262. typedef enum _NDIS_BPC_INDICATE_REASON
  2263. {
  2264. bpcBufferFull = 0,
  2265. bpcBufferForced,
  2266. bpcBufferTimeOut,
  2267. bpcBufferDiscontinuity,
  2268. bpcBufferOverflow,
  2269. bpcBufferStatusEvent
  2270. } NDIS_BPC_INDICATE_REASON, *PNDIS_BPC_INDICATE_REASON;
  2271. //
  2272. // BPC Stream Types
  2273. //
  2274. #define BPC_STREAM_TYPE_GENERIC_MIN 0x01000000
  2275. #define BPC_STREAM_TYPE_RAW 0x01000000
  2276. #define BPC_STREAM_TYPE_MPT_128 0x01000001
  2277. #define BPC_STREAM_TYPE_MPT_128_CRC 0x01000002
  2278. #define BPC_STREAM_TYPE_IP 0x01000003
  2279. #define BPC_STREAM_TYPE_PROVIDER_MIN 0x02000000
  2280. #define BPC_STREAM_TYPE_PROVIDER_MAX 0x02ffffff
  2281. #define BPC_STREAM_TYPE_ADAPTER_MIN 0x03000000
  2282. #define BPC_STREAM_TYPE_ADAPTER_MAX 0x03ffffff
  2283. //
  2284. // BPC Adapter Capabilities
  2285. //
  2286. typedef struct _NDIS_BPC_ADAPTER_CAPS
  2287. {
  2288. ULONG ulBPCMajorRev;
  2289. ULONG ulBPCMinorRev;
  2290. ULONG ulcHSDataDevices;
  2291. ULONG ulbpsHSDeviceMax;
  2292. ULONG ulcLSDataDevices;
  2293. ULONG ulbpsLSDeviceMax;
  2294. ULONG ulcTuningDevices;
  2295. ULONG ulcbLargestStatus;
  2296. ULONG ulVendorId;
  2297. ULONG ulAdapterId;
  2298. GUID guidProvider;
  2299. } NDIS_BPC_ADAPTER_CAPS, *PNDIS_BPC_ADAPTER_CAPS;
  2300. //
  2301. // BPC Device Enumeration
  2302. //
  2303. typedef struct _NDIS_BPC_DEVICES
  2304. {
  2305. ULONG ulcDevices;
  2306. BPC_HANDLE rgnhDevices[BPC_MIN_DIMENSION];
  2307. } NDIS_BPC_DEVICES, *PNDIS_BPC_DEVICES;
  2308. #define CbDevices(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICES, rgnhDevices) + (cnt) * sizeof(BPC_HANDLE))
  2309. //
  2310. // BPC Device Capabilities Structure
  2311. //
  2312. typedef struct NDIS_BPC_DEVICE_CAPS
  2313. {
  2314. BPC_HANDLE nhDevice;
  2315. ULONG ulBPCCaps;
  2316. ULONG ulbpsMax;
  2317. ULONG ulcStreamTypes;
  2318. ULONG rgulStreamTypes[BPC_MIN_DIMENSION];
  2319. } NDIS_BPC_DEVICE_CAPS, *PNDIS_BPC_DEVICE_CAPS;
  2320. #define CbDeviceCaps(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICE_CAPS, rgulStreamTypes) + (cnt) * sizeof(ULONG))
  2321. //
  2322. // BPC Device Capability Definitions
  2323. // (ie Flags that can be set in ulBPCCaps
  2324. //
  2325. #define BPCCapBusMasteredData 0x01
  2326. #define BPCCapIndependentTuner 0x02
  2327. #define BPCCapExternalDataBus 0x04
  2328. #define BPCCapLowSpeedData 0x10
  2329. #define BPCCapHighSpeedData 0x20
  2330. //
  2331. // BPC Device Settings Structure
  2332. //
  2333. typedef struct NDIS_BPC_DEVICE_SETTINGS
  2334. {
  2335. BPC_HANDLE nhDevice;
  2336. ULONG ulBPCCaps;
  2337. ULONG ulcConnections;
  2338. BOOLEAN fEnabled;
  2339. ULONG ulStreamType;
  2340. ULONG ulcbAddressConnection;
  2341. ULONG rgulAddressConnection[BPC_MIN_DIMENSION];
  2342. } NDIS_BPC_DEVICE_SETTINGS, *PNDIS_BPC_DEVICE_SETTINGS;
  2343. #define CbDeviceSettings(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICE_SETTINGS, rgulAddressConnection) + (cnt) * sizeof(ULONG))
  2344. //
  2345. // BPC Connection State Definitions
  2346. // (ie Acceptable values for ulState)
  2347. //
  2348. #define BPC_CONNECT_STATE_UNCOMMITTED 0
  2349. #define BPC_CONNECT_STATE_QUEUED 1
  2350. #define BPC_CONNECT_STATE_ACTIVE 2
  2351. #define BPC_CONNECT_STATE_DISCONNECTING 3
  2352. //
  2353. // BPC Connections Status Structure
  2354. //
  2355. typedef struct NDIS_BPC_CONNECTION_STATUS
  2356. {
  2357. BPC_HANDLE nhConnection;
  2358. BPC_HANDLE nhDevice;
  2359. ULONG ulConnectPriority;
  2360. ULONG ulDisconnectPriority;
  2361. ULONG ulbpsAverage;
  2362. ULONG ulbpsBurst;
  2363. ULONG ulState;
  2364. BOOLEAN fEnabled;
  2365. } NDIS_BPC_CONNECTION_STATUS, *PNDIS_BPC_CONNECTION_STATUS;
  2366. //
  2367. // BPC Address Comparison Structure
  2368. //
  2369. typedef struct NDIS_BPC_ADDRESS_COMPARE
  2370. {
  2371. BOOLEAN fEqual;
  2372. ULONG ulcbFirstOffset;
  2373. ULONG ulcbFirstLength;
  2374. ULONG ulcbSecondOffset;
  2375. ULONG ulcbSecondLength;
  2376. } NDIS_BPC_ADDRESS_COMPARE, *PNDIS_BPC_ADDRESS_COMPARE;
  2377. //
  2378. // BPC Program Guide Types
  2379. //
  2380. // Currently there are no Generic BPC Program Guide types.
  2381. //
  2382. #define BPC_GUIDE_GENERIC_MIN 0x01000000
  2383. #define BPC_GUIDE_GENERIC_MAX 0x01ffffff
  2384. #define BPC_GUIDE_PROVIDER_MIN 0x02000000
  2385. #define BPC_GUIDE_PROVIDER_MAX 0x02ffffff
  2386. #define BPC_GUIDE_ADAPTER_MIN 0x03000000
  2387. #define BPC_GUIDE_ADAPTER_MAX 0x03ffffff
  2388. //
  2389. // BPC Program Guide Structure
  2390. //
  2391. typedef struct NDIS_BPC_PROGRAM_GUIDE
  2392. {
  2393. ULONG ulGuideType;
  2394. BPC_FILETIME ftLastUpdate;
  2395. ULONG ulChangeNumber;
  2396. ULONG ulcbGuideSize;
  2397. ULONG rgulGuideData[BPC_MIN_DIMENSION];
  2398. } NDIS_BPC_PROGRAM_GUIDE, *PNDIS_BPC_PROGRAM_GUIDE;
  2399. //
  2400. // BPC Extension Errors
  2401. // (ie Acceptable values for ulBPCError)
  2402. //
  2403. typedef enum _NDIS_BPC_ERROR
  2404. {
  2405. bpcErrorUnknownFailure = 0xc0ff0000,
  2406. bpcErrorHardwareFailure,
  2407. bpcErrorProviderFailure,
  2408. bpcErrorNoDataDevice,
  2409. bpcErrorNoTuningDevice,
  2410. bpcErrorDeviceNotCapable,
  2411. bpcErrorConflictingDevice,
  2412. bpcErrorConflictingCapability,
  2413. bpcErrorNoBufferMemory,
  2414. bpcErrorNoResources,
  2415. bpcErrorAdapterClosing,
  2416. bpcErrorConnectionClosing,
  2417. bpcErrorTooComplex,
  2418. bpcErrorProviderNotSupported,
  2419. bpcErrorUnknownProviderStructure,
  2420. bpcErrorAddressNotSupported,
  2421. bpcErrorInvalidAddress,
  2422. bpcErrorUnknownAdapterStructure
  2423. } NDIS_BPC_ERROR, *PNDIS_BPC_ERROR;
  2424. //
  2425. // BPC Last Error Structure
  2426. //
  2427. typedef struct NDIS_BPC_LAST_ERROR
  2428. {
  2429. ULONG ulErrorContext;
  2430. ULONG ulBPCError;
  2431. ULONG ulAdapterError;
  2432. ULONG ulAdapterContext;
  2433. } NDIS_BPC_LAST_ERROR, *PNDIS_BPC_LAST_ERROR;
  2434. //
  2435. // BPC Buffer Pool Request/Report Structure
  2436. //
  2437. typedef struct NDIS_BPC_POOL
  2438. {
  2439. BPC_HANDLE nhConnection;
  2440. ULONG ulcbPoolSize;
  2441. ULONG ulcbMaxBufferSize;
  2442. ULONG ulcbBufferReserved;
  2443. } NDIS_BPC_POOL, *PNDIS_BPC_POOL;
  2444. //
  2445. // BPC Provider and Adapter Specific Structures are defined in the
  2446. // BpcXXXX.H file which the Provider/Adapter Manufacturer supplies.
  2447. //
  2448. //
  2449. // BPC Connect Structure
  2450. //
  2451. typedef struct NDIS_BPC_CONNECT
  2452. {
  2453. BPC_HANDLE nhConnection;
  2454. BPC_HANDLE nhDevice;
  2455. ULONG ulConnectPriority;
  2456. ULONG ulDisconnectPriority;
  2457. BOOLEAN fImmediate;
  2458. ULONG ulcbAddress;
  2459. GUID guidProvider;
  2460. ULONG rgulAddress[BPC_MIN_DIMENSION];
  2461. } NDIS_BPC_CONNECT, *PNDIS_BPC_CONNECT;
  2462. #define CbConnect(cnt) (FIELD_OFFSET(NDIS_BPC_CONNECT, rgulAddress) + (cnt) * sizeof(ULONG))
  2463. //
  2464. // BPC Commit Connections Structure
  2465. //
  2466. typedef struct NDIS_BPC_COMMIT
  2467. {
  2468. ULONG ulcConnections;
  2469. BPC_HANDLE rgnhConnections[BPC_MIN_DIMENSION];
  2470. } NDIS_BPC_COMMIT, *PNDIS_BPC_COMMIT;
  2471. //
  2472. // BPC Disconnect Structure
  2473. //
  2474. typedef struct NDIS_BPC_DISCONNECT
  2475. {
  2476. BPC_HANDLE nhConnection;
  2477. } NDIS_BPC_DISCONNECT, *PNDIS_BPC_DISCONNECT;
  2478. //
  2479. // BPC Enable Connection Structure
  2480. //
  2481. typedef struct NDIS_BPC_CONNECTION_ENABLE
  2482. {
  2483. BPC_HANDLE nhConnection;
  2484. BOOLEAN fEnabled;
  2485. } NDIS_BPC_CONNECTION_ENABLE, *PNDIS_BPC_CONNECTION_ENABLE;
  2486. //
  2487. // BPC Pool Return Structure
  2488. //
  2489. typedef struct NDIS_BPC_POOL_RETURN
  2490. {
  2491. BPC_HANDLE nhConnection;
  2492. } NDIS_BPC_POOL_RETURN, *PNDIS_BPC_POOL_RETURN;
  2493. typedef struct NDIS_BPC_FORCE_RECEIVE
  2494. {
  2495. BPC_HANDLE nhConnection;
  2496. ULONG ulReasonCode;
  2497. } NDIS_BPC_FORCE_RECEIVE, *PNDIS_BPC_FORCE_RECEIVE;
  2498. //
  2499. // BPC Media Specific Information Structure
  2500. //
  2501. typedef struct NDIS_BPC_MEDIA_SPECIFIC_INFORMATION
  2502. {
  2503. BPC_HANDLE nhConnection; // The handle to the data device.
  2504. ULONG ulBPCStreamType; // The stream type of the data in packet
  2505. ULONG ulReasonCode; // The reason the buffer was indicated
  2506. PVOID pvMiniportReserved1;
  2507. ULONG ulMiniportReserved2;
  2508. } NDIS_BPC_MEDIA_SPECIFIC_INFORMATION, *PNDIS_BPC_MEDIA_SPECIFIC_INFORMATION;
  2509. //
  2510. // BPC Status Categories
  2511. //
  2512. #define BPC_CATEGORY_BPC 0x01000000
  2513. #define BPC_CATEGORY_PROVIDER 0x02000000
  2514. #define BPC_CATEGORY_ADAPTER 0x03000000
  2515. //
  2516. // BPC Status Types for Category BPC_CATEGORY_BPC
  2517. //
  2518. #define BPC_STATUS_CONNECTED 0x00000001
  2519. #define BPC_STATUS_QUEUED 0x00000002
  2520. #define BPC_STATUS_ACTIVE 0x00000003
  2521. #define BPC_STATUS_DISCONNECTED 0x00000004
  2522. #define BPC_STATUS_OVERFLOW 0x00000005
  2523. #define BPC_STATUS_DATA_STOP 0x00000006
  2524. #define BPC_STATUS_DATA_START 0x00000007
  2525. #define BPC_STATUS_DATA_ERROR 0x00000008
  2526. //
  2527. // BPC Status Indication Structure
  2528. //
  2529. typedef struct NDIS_BPC_STATUS
  2530. {
  2531. ULONG ulStatusCategory;
  2532. ULONG ulStatusType;
  2533. ULONG ulcbStatus;
  2534. ULONG rgulStatus;
  2535. } NDIS_BPC_STATUS, *PNDIS_BPC_STATUS;
  2536. //
  2537. // BPC Connection Status Structure
  2538. //
  2539. // All BPC Generic Connection Status package this structure
  2540. // in rgulStatus to indicate to which connection and device
  2541. // the status pertains.
  2542. //
  2543. typedef struct NDIS_BPC_STATUS_CONNECTION
  2544. {
  2545. BPC_HANDLE nhConnection;
  2546. BPC_HANDLE nhDevice;
  2547. } NDIS_BPC_STATUS_CONNECTED, *PNDIS_BPC_STATUS_CONNECTED;
  2548. #ifdef __cplusplus
  2549. }
  2550. #endif
  2551. //
  2552. // flags used for OID_GEN_MINIPORT_INFO
  2553. //
  2554. #define NDIS_MINIPORT_BUS_MASTER 0x00000001
  2555. #define NDIS_MINIPORT_WDM_DRIVER 0x00000002
  2556. #define NDIS_MINIPORT_SG_LIST 0x00000004
  2557. #define NDIS_MINIPORT_SUPPORTS_MEDIA_QUERY 0x00000008
  2558. #define NDIS_MINIPORT_INDICATES_PACKETS 0x00000010
  2559. #define NDIS_MINIPORT_IGNORE_PACKET_QUEUE 0x00000020
  2560. #define NDIS_MINIPORT_IGNORE_REQUEST_QUEUE 0x00000040
  2561. #define NDIS_MINIPORT_IGNORE_TOKEN_RING_ERRORS 0x00000080
  2562. #define NDIS_MINIPORT_INTERMEDIATE_DRIVER 0x00000100
  2563. #define NDIS_MINIPORT_IS_NDIS_5 0x00000200
  2564. #define NDIS_MINIPORT_IS_CO 0x00000400
  2565. #define NDIS_MINIPORT_DESERIALIZE 0x00000800
  2566. #define NDIS_MINIPORT_REQUIRES_MEDIA_POLLING 0x00001000
  2567. #define NDIS_MINIPORT_SUPPORTS_MEDIA_SENSE 0x00002000
  2568. #define NDIS_MINIPORT_NETBOOT_CARD 0x00004000
  2569. #define NDIS_MINIPORT_PM_SUPPORTED 0x00008000
  2570. #define NDIS_MINIPORT_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00010000
  2571. #define NDIS_MINIPORT_USES_SAFE_BUFFER_APIS 0x00020000
  2572. #define NDIS_MINIPORT_HIDDEN 0x00040000
  2573. #define NDIS_MINIPORT_SWENUM 0x00080000
  2574. #define NDIS_MINIPORT_SURPRISE_REMOVE_OK 0x00100000
  2575. #define NDIS_MINIPORT_NO_HALT_ON_SUSPEND 0x00200000
  2576. #define NDIS_MINIPORT_HARDWARE_DEVICE 0x00400000
  2577. #define NDIS_MINIPORT_SUPPORTS_CANCEL_SEND_PACKETS 0x00800000
  2578. #define NDIS_MINIPORT_64BITS_DMA 0x01000000
  2579. #endif // _NTDDNDIS_