NtDDNdis.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:108k
源码类别:

模拟服务器

开发平台:

C/C++

  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.     
  817. typedef enum _NDIS_802_11_RELOAD_DEFAULTS
  818. {
  819.     Ndis802_11ReloadWEPKeys
  820. } NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS;
  821. //
  822. // IRDA objects
  823. //
  824. #define OID_IRDA_RECEIVING                      0x0A010100
  825. #define OID_IRDA_TURNAROUND_TIME                0x0A010101
  826. #define OID_IRDA_SUPPORTED_SPEEDS               0x0A010102
  827. #define OID_IRDA_LINK_SPEED                     0x0A010103
  828. #define OID_IRDA_MEDIA_BUSY                     0x0A010104
  829. #define OID_IRDA_EXTRA_RCV_BOFS                 0x0A010200
  830. #define OID_IRDA_RATE_SNIFF                     0x0A010201
  831. #define OID_IRDA_UNICAST_LIST                   0x0A010202
  832. #define OID_IRDA_MAX_UNICAST_LIST_SIZE          0x0A010203
  833. #define OID_IRDA_MAX_RECEIVE_WINDOW_SIZE        0x0A010204
  834. #define OID_IRDA_MAX_SEND_WINDOW_SIZE           0x0A010205
  835. #define OID_IRDA_RESERVED1                      0x0A01020A  // The range between OID_IRDA_RESERVED1
  836. #define OID_IRDA_RESERVED2                      0x0A01020F  // and OID_IRDA_RESERVED2 is reserved
  837. //
  838. // BPC OIDs
  839. //
  840. #define OID_BPC_ADAPTER_CAPS                    0x0B010100
  841. #define OID_BPC_DEVICES                         0x0B010101
  842. #define OID_BPC_DEVICE_CAPS                     0x0B010102
  843. #define OID_BPC_DEVICE_SETTINGS                 0x0B010103
  844. #define OID_BPC_CONNECTION_STATUS               0x0B010104
  845. #define OID_BPC_ADDRESS_COMPARE                 0x0B010105
  846. #define OID_BPC_PROGRAM_GUIDE                   0x0B010106
  847. #define OID_BPC_LAST_ERROR                      0x0B020107
  848. #define OID_BPC_POOL                            0x0B010108
  849. #define OID_BPC_PROVIDER_SPECIFIC               0x0B020109
  850. #define OID_BPC_ADAPTER_SPECIFIC                0x0B02010A
  851. #define OID_BPC_CONNECT                         0x0B01010B
  852. #define OID_BPC_COMMIT                          0x0B01010C
  853. #define OID_BPC_DISCONNECT                      0x0B01010D
  854. #define OID_BPC_CONNECTION_ENABLE               0x0B01010E
  855. #define OID_BPC_POOL_RESERVE                    0x0B01010F
  856. #define OID_BPC_POOL_RETURN                     0x0B010110
  857. #define OID_BPC_FORCE_RECEIVE                   0x0B010111
  858. #define OID_BPC_LAST                            0x0B020112
  859. //
  860. // IEEE1394 mandatory general OIDs.
  861. //
  862. #define OID_1394_LOCAL_NODE_INFO                0x0C010101
  863. #define OID_1394_VC_INFO                        0x0C010102
  864. //
  865. // The following OIDs are not specific to a media.
  866. //
  867. //
  868. // These are objects for Connection-oriented media call-managers.
  869. //
  870. #define OID_CO_ADD_PVC                          0xFE000001
  871. #define OID_CO_DELETE_PVC                       0xFE000002
  872. #define OID_CO_GET_CALL_INFORMATION             0xFE000003
  873. #define OID_CO_ADD_ADDRESS                      0xFE000004
  874. #define OID_CO_DELETE_ADDRESS                   0xFE000005
  875. #define OID_CO_GET_ADDRESSES                    0xFE000006
  876. #define OID_CO_ADDRESS_CHANGE                   0xFE000007
  877. #define OID_CO_SIGNALING_ENABLED                0xFE000008
  878. #define OID_CO_SIGNALING_DISABLED               0xFE000009
  879. #define OID_CO_AF_CLOSE                         0xFE00000A
  880. //
  881. // Objects for call-managers and MCMs that support TAPI access.
  882. //
  883. #define OID_CO_TAPI_CM_CAPS                     0xFE001001
  884. #define OID_CO_TAPI_LINE_CAPS                   0xFE001002
  885. #define OID_CO_TAPI_ADDRESS_CAPS                0xFE001003
  886. #define OID_CO_TAPI_TRANSLATE_TAPI_CALLPARAMS   0xFE001004
  887. #define OID_CO_TAPI_TRANSLATE_NDIS_CALLPARAMS   0xFE001005
  888. #define OID_CO_TAPI_TRANSLATE_TAPI_SAP          0xFE001006
  889. #define OID_CO_TAPI_GET_CALL_DIAGNOSTICS        0xFE001007
  890. #define OID_CO_TAPI_REPORT_DIGITS               0xFE001008 
  891. #define OID_CO_TAPI_DONT_REPORT_DIGITS          0xFE001009
  892. //
  893. //  PnP and PM OIDs
  894. //
  895. #define OID_PNP_CAPABILITIES                    0xFD010100
  896. #define OID_PNP_SET_POWER                       0xFD010101
  897. #define OID_PNP_QUERY_POWER                     0xFD010102
  898. #define OID_PNP_ADD_WAKE_UP_PATTERN             0xFD010103
  899. #define OID_PNP_REMOVE_WAKE_UP_PATTERN          0xFD010104
  900. #define OID_PNP_WAKE_UP_PATTERN_LIST            0xFD010105
  901. #define OID_PNP_ENABLE_WAKE_UP                  0xFD010106
  902. //
  903. //  PnP/PM Statistics (Optional).
  904. //
  905. #define OID_PNP_WAKE_UP_OK                      0xFD020200
  906. #define OID_PNP_WAKE_UP_ERROR                   0xFD020201
  907. //
  908. //  The following bits are defined for OID_PNP_ENABLE_WAKE_UP
  909. //
  910. #define NDIS_PNP_WAKE_UP_MAGIC_PACKET           0x00000001
  911. #define NDIS_PNP_WAKE_UP_PATTERN_MATCH          0x00000002
  912. #define NDIS_PNP_WAKE_UP_LINK_CHANGE            0x00000004
  913. //
  914. //  TCP/IP OIDs
  915. //
  916. #define OID_TCP_TASK_OFFLOAD                    0xFC010201
  917. #define OID_TCP_TASK_IPSEC_ADD_SA               0xFC010202
  918. #define OID_TCP_TASK_IPSEC_DELETE_SA            0xFC010203
  919. #define OID_TCP_SAN_SUPPORT                     0xFC010204
  920. //
  921. //  Defines for FFP
  922. //
  923. #define OID_FFP_SUPPORT                         0xFC010210
  924. #define OID_FFP_FLUSH                           0xFC010211
  925. #define OID_FFP_CONTROL                         0xFC010212
  926. #define OID_FFP_PARAMS                          0xFC010213
  927. #define OID_FFP_DATA                            0xFC010214
  928. #define OID_FFP_DRIVER_STATS                    0xFC020210
  929. #define OID_FFP_ADAPTER_STATS                   0xFC020211
  930. //
  931. //  Defines for QOS
  932. //
  933. #define OID_QOS_TC_SUPPORTED                    0xFB010100
  934. #define OID_QOS_REMAINING_BANDWIDTH             0xFB010101
  935. #define OID_QOS_ISSLOW_FLOW                     0xFB010102
  936. #define OID_QOS_BESTEFFORT_BANDWIDTH            0xFB010103
  937. #define OID_QOS_LATENCY                         0xFB010104
  938. #define OID_QOS_FLOW_IP_CONFORMING              0xFB010105
  939. #define OID_QOS_FLOW_COUNT                      0xFB010106
  940. #define OID_QOS_NON_BESTEFFORT_LIMIT            0xFB010107
  941. #define OID_QOS_SCHEDULING_PROFILES_SUPPORTED   0xFB010108
  942. #define OID_QOS_CURRENT_SCHEDULING_PROFILE      0xFB010109
  943. #define OID_QOS_TIMER_RESOLUTION                0xFB01010A
  944. #define OID_QOS_STATISTICS_BUFFER               0xFB01010B
  945. #define OID_QOS_HIERARCHY_CLASS                 0xFB01010C
  946. #define OID_QOS_FLOW_MODE                       0xFB01010D
  947. #define OID_QOS_ISSLOW_FRAGMENT_SIZE            0xFB01010E
  948. #define OID_QOS_FLOW_IP_NONCONFORMING           0xFB01010F
  949. #define OID_QOS_FLOW_8021P_CONFORMING           0xFB010110
  950. #define OID_QOS_FLOW_8021P_NONCONFORMING        0xFB010111
  951. #define OID_QOS_ENABLE_AVG_STATS                0xFB010112
  952. #define OID_QOS_ENABLE_WINDOW_ADJUSTMENT        0xFB010113
  953. //
  954. // NDIS Proxy OID_GEN_CO_DEVICE_PROFILE structure. The optional OID and
  955. // this structure is a generic means of describing a CO device's
  956. // capabilites, and is used by the NDIS Proxy to construct a TAPI device
  957. // capabilities structure.
  958. //
  959. typedef struct NDIS_CO_DEVICE_PROFILE
  960. {
  961.     NDIS_VAR_DATA_DESC  DeviceDescription;  // e.g. 'GigabitATMNet'
  962.     NDIS_VAR_DATA_DESC  DevSpecificInfo;    // special features
  963.     ULONG   ulTAPISupplementaryPassThru;// reserved in NT5
  964.     ULONG   ulAddressModes;
  965.     ULONG   ulNumAddresses;
  966.     ULONG   ulBearerModes;
  967.     ULONG   ulMaxTxRate; // bytes per second
  968.     ULONG   ulMinTxRate; // bytes per second
  969.     ULONG   ulMaxRxRate; // bytes per second
  970.     ULONG   ulMinRxRate; // bytes per second
  971.     ULONG   ulMediaModes;   
  972.     //
  973.     // Tone/digit generation and recognition capabilities
  974.     //
  975.     ULONG   ulGenerateToneModes;
  976.     ULONG   ulGenerateToneMaxNumFreq;
  977.     ULONG   ulGenerateDigitModes;
  978.     ULONG   ulMonitorToneMaxNumFreq;
  979.     ULONG   ulMonitorToneMaxNumEntries;
  980.     ULONG   ulMonitorDigitModes;
  981.     ULONG   ulGatherDigitsMinTimeout;// milliseconds
  982.     ULONG   ulGatherDigitsMaxTimeout;// milliseconds
  983.     ULONG   ulDevCapFlags;          // Misc. capabilities
  984.     ULONG   ulMaxNumActiveCalls;    // (This * ulMinRate) = total bandwidth (which may equal ulMaxRate)
  985.     ULONG   ulAnswerMode;           // Effect of answering a new call when an
  986.                                     // existing call is non-idle
  987.     //
  988.     // User-User info sizes allowed to accompany each operation
  989.     //
  990.     ULONG   ulUUIAcceptSize;    // bytes
  991.     ULONG   ulUUIAnswerSize;    // bytes
  992.     ULONG   ulUUIMakeCallSize;  // bytes
  993.     ULONG   ulUUIDropSize;      // bytes
  994.     ULONG   ulUUISendUserUserInfoSize; // bytes
  995.     ULONG   ulUUICallInfoSize;  // bytes
  996. } NDIS_CO_DEVICE_PROFILE, *PNDIS_CO_DEVICE_PROFILE;
  997. //
  998. //  Structures for TCP IPSec.
  999. //
  1000. typedef ULONG   IPAddr, IPMask;
  1001. typedef ULONG   SPI_TYPE;
  1002. typedef enum    _OFFLOAD_OPERATION_E
  1003. {
  1004.     AUTHENTICATE = 1,
  1005.     ENCRYPT
  1006. }
  1007.     OFFLOAD_OPERATION_E;
  1008. typedef struct _OFFLOAD_ALGO_INFO
  1009. {
  1010.     ULONG   algoIdentifier;
  1011.     ULONG   algoKeylen;
  1012.     ULONG   algoRounds;
  1013. }
  1014.     OFFLOAD_ALGO_INFO,
  1015.     *POFFLOAD_ALGO_INFO;
  1016. typedef enum _OFFLOAD_CONF_ALGO
  1017. {
  1018.     OFFLOAD_IPSEC_CONF_NONE,
  1019.     OFFLOAD_IPSEC_CONF_DES,
  1020.     OFFLOAD_IPSEC_CONF_RESERVED,
  1021.     OFFLOAD_IPSEC_CONF_3_DES,
  1022.     OFFLOAD_IPSEC_CONF_MAX
  1023. }
  1024.     OFFLOAD_CONF_ALGO;
  1025. typedef enum _OFFLOAD_INTEGRITY_ALGO
  1026. {
  1027.     OFFLOAD_IPSEC_INTEGRITY_NONE,
  1028.     OFFLOAD_IPSEC_INTEGRITY_MD5,
  1029.     OFFLOAD_IPSEC_INTEGRITY_SHA,
  1030.     OFFLOAD_IPSEC_INTEGRITY_MAX
  1031. }
  1032.     OFFLOAD_INTEGRITY_ALGO;
  1033. typedef struct _OFFLOAD_SECURITY_ASSOCIATION
  1034. {
  1035.     OFFLOAD_OPERATION_E     Operation;
  1036.     SPI_TYPE                SPI;
  1037.     OFFLOAD_ALGO_INFO       IntegrityAlgo;
  1038.     OFFLOAD_ALGO_INFO       ConfAlgo;
  1039.     OFFLOAD_ALGO_INFO       Reserved;
  1040. }
  1041.     OFFLOAD_SECURITY_ASSOCIATION,
  1042.     *POFFLOAD_SECURITY_ASSOCIATION;
  1043. #define OFFLOAD_MAX_SAS             3
  1044. #define OFFLOAD_INBOUND_SA          0x0001
  1045. #define OFFLOAD_OUTBOUND_SA         0x0002
  1046. typedef struct _OFFLOAD_IPSEC_ADD_SA
  1047. {
  1048.     IPAddr                          SrcAddr;
  1049.     IPMask                          SrcMask;
  1050.     IPAddr                          DestAddr;
  1051.     IPMask                          DestMask;
  1052.     ULONG                           Protocol;
  1053.     USHORT                          SrcPort;
  1054.     USHORT                          DestPort;
  1055.     IPAddr                          SrcTunnelAddr;
  1056.     IPAddr                          DestTunnelAddr;
  1057.     USHORT                          Flags;
  1058.     SHORT                           NumSAs;
  1059.     OFFLOAD_SECURITY_ASSOCIATION    SecAssoc[OFFLOAD_MAX_SAS];
  1060.     HANDLE                          OffloadHandle;
  1061.     ULONG                           KeyLen;
  1062.     UCHAR                           KeyMat[1];
  1063. } OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA;
  1064. typedef struct _OFFLOAD_IPSEC_DELETE_SA
  1065. {
  1066.     HANDLE  OffloadHandle;
  1067. } OFFLOAD_IPSEC_DELETE_SA, *POFFLOAD_IPSEC_DELETE_SA;
  1068. //
  1069. // Type to go with OID_GEN_VLAN_ID: the least significant 12 bits are
  1070. // used as the VLAN ID (VID) per IEEE 802.1Q. Higher order bits are
  1071. // reserved and must be set to 0.
  1072. //
  1073. typedef ULONG NDIS_VLAN_ID;
  1074. //
  1075. // Medium the Ndis Driver is running on (OID_GEN_MEDIA_SUPPORTED/ OID_GEN_MEDIA_IN_USE).
  1076. //
  1077. typedef enum _NDIS_MEDIUM
  1078. {
  1079.     NdisMedium802_3,
  1080.     NdisMedium802_5,
  1081.     NdisMediumFddi,
  1082.     NdisMediumWan,
  1083.     NdisMediumLocalTalk,
  1084.     NdisMediumDix,              // defined for convenience, not a real medium
  1085.     NdisMediumArcnetRaw,
  1086.     NdisMediumArcnet878_2,
  1087.     NdisMediumAtm,
  1088.     NdisMediumWirelessWan,
  1089.     NdisMediumIrda,
  1090.     NdisMediumBpc,
  1091.     NdisMediumCoWan,
  1092.     NdisMedium1394,
  1093.     NdisMediumMax               // Not a real medium, defined as an upper-bound
  1094. } NDIS_MEDIUM, *PNDIS_MEDIUM;
  1095. //
  1096. // Physical Medium Type definitions. Used with OID_GEN_PHYSICAL_MEDIUM.
  1097. //
  1098. typedef enum _NDIS_PHYSICAL_MEDIUM
  1099. {
  1100.     NdisPhysicalMediumUnspecified,
  1101.     NdisPhysicalMediumWirelessLan,
  1102.     NdisPhysicalMediumCableModem,
  1103.     NdisPhysicalMediumPhoneLine,
  1104.     NdisPhysicalMediumPowerLine,
  1105.     NdisPhysicalMediumDSL,      // includes ADSL and UADSL (G.Lite)
  1106.     NdisPhysicalMediumFibreChannel,
  1107.     NdisPhysicalMedium1394,
  1108.     NdisPhysicalMediumWirelessWan,
  1109.     NdisPhysicalMediumMax       // Not a real physical type, defined as an upper-bound
  1110. } NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM;
  1111. //
  1112. //  Protocol types supported by ndis. These values need to be consistent with ADDRESS_TYPE_XXX defined in TDI.H
  1113. //
  1114. #define NDIS_PROTOCOL_ID_DEFAULT        0x00
  1115. #define NDIS_PROTOCOL_ID_TCP_IP         0x02
  1116. #define NDIS_PROTOCOL_ID_IPX            0x06
  1117. #define NDIS_PROTOCOL_ID_NBF            0x07
  1118. #define NDIS_PROTOCOL_ID_MAX            0x0F
  1119. #define NDIS_PROTOCOL_ID_MASK           0x0F
  1120. //
  1121. // The following is used with OID_GEN_TRANSPORT_HEADER_OFFSET to indicate the length of the layer-2 header
  1122. // for packets sent by a particular protocol.
  1123. //
  1124. typedef struct _TRANSPORT_HEADER_OFFSET
  1125. {
  1126.     USHORT      ProtocolType;       // The protocol that is sending this OID (NDIS_PROTOCOL_ID_XXX above)
  1127.     USHORT      HeaderOffset;       // The header offset
  1128. } TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;
  1129. //
  1130. // The structures below need to be consistent with TRANSPORT_ADDRESS structures in TDI.H
  1131. //
  1132. typedef struct _NETWORK_ADDRESS
  1133. {
  1134.     USHORT      AddressLength;      // length in bytes of Address[] in this
  1135.     USHORT      AddressType;        // type of this address (NDIS_PROTOCOL_ID_XXX above)
  1136.     UCHAR       Address[1];         // actually AddressLength bytes long
  1137. } NETWORK_ADDRESS, *PNETWORK_ADDRESS;
  1138. //
  1139. // The following is used with OID_GEN_NETWORK_LAYER_ADDRESSES to set network layer addresses on an interface
  1140. //
  1141. typedef struct _NETWORK_ADDRESS_LIST
  1142. {
  1143.     LONG        AddressCount;       // number of addresses following
  1144.     USHORT      AddressType;        // type of this address (NDIS_PROTOCOL_ID_XXX above)
  1145.     NETWORK_ADDRESS Address[1];     // actually AddressCount elements long
  1146. } NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST;
  1147. //
  1148. // IP address - This must remain consistent with TDI_ADDRESS_IP in tdi.h
  1149. //
  1150. typedef struct _NETWORK_ADDRESS_IP
  1151. {
  1152.     USHORT      sin_port;
  1153.     ULONG       in_addr;
  1154.     UCHAR       sin_zero[8];
  1155. } NETWORK_ADDRESS_IP, *PNETWORK_ADDRESS_IP;
  1156. #define NETWORK_ADDRESS_LENGTH_IP sizeof (NETWORK_ADDRESS_IP)
  1157. //
  1158. // IPX address - This must remain consistent with TDI_ADDRESS_IPX in tdi.h.
  1159. //
  1160. typedef struct _NETWORK_ADDRESS_IPX
  1161. {
  1162.     ULONG       NetworkAddress;
  1163.     UCHAR       NodeAddress[6];
  1164.     USHORT      Socket;
  1165. } NETWORK_ADDRESS_IPX, *PNETWORK_ADDRESS_IPX;
  1166. #define NETWORK_ADDRESS_LENGTH_IPX sizeof (NETWORK_ADDRESS_IPX)
  1167. //
  1168. // Hardware status codes (OID_GEN_HARDWARE_STATUS).
  1169. //
  1170. typedef enum _NDIS_HARDWARE_STATUS
  1171. {
  1172.     NdisHardwareStatusReady,
  1173.     NdisHardwareStatusInitializing,
  1174.     NdisHardwareStatusReset,
  1175.     NdisHardwareStatusClosing,
  1176.     NdisHardwareStatusNotReady
  1177. } NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
  1178. //
  1179. // this is the type passed in the OID_GEN_GET_TIME_CAPS request
  1180. //
  1181. typedef struct _GEN_GET_TIME_CAPS
  1182. {
  1183.     ULONG                       Flags;  // Bits defined below
  1184.     ULONG                       ClockPrecision;
  1185. } GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;
  1186. #define READABLE_LOCAL_CLOCK                    0x00000001
  1187. #define CLOCK_NETWORK_DERIVED                   0x00000002
  1188. #define CLOCK_PRECISION                         0x00000004
  1189. #define RECEIVE_TIME_INDICATION_CAPABLE         0x00000008
  1190. #define TIMED_SEND_CAPABLE                      0x00000010
  1191. #define TIME_STAMP_CAPABLE                      0x00000020
  1192. //
  1193. // this is the type passed in the OID_GEN_GET_NETCARD_TIME request
  1194. //
  1195. typedef struct _GEN_GET_NETCARD_TIME
  1196. {
  1197.     ULONGLONG                   ReadTime;
  1198. } GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;
  1199. //
  1200. //  NDIS PnP routines and definitions.
  1201. //
  1202. typedef struct _NDIS_PM_PACKET_PATTERN
  1203. {
  1204.     ULONG   Priority;                   // Importance of the given pattern.
  1205.     ULONG   Reserved;                   // Context information for transports.
  1206.     ULONG   MaskSize;                   // Size in bytes of the pattern mask.
  1207.     ULONG   PatternOffset;              // Offset from beginning of this
  1208.                                         // structure to the pattern bytes.
  1209.     ULONG   PatternSize;                // Size in bytes of the pattern.
  1210.     ULONG   PatternFlags;               // Flags (TBD).
  1211. } NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN;
  1212. //
  1213. //  The following structure defines the device power states.
  1214. //
  1215. typedef enum _NDIS_DEVICE_POWER_STATE
  1216. {
  1217.     NdisDeviceStateUnspecified = 0,
  1218.     NdisDeviceStateD0,
  1219.     NdisDeviceStateD1,
  1220.     NdisDeviceStateD2,
  1221.     NdisDeviceStateD3,
  1222.     NdisDeviceStateMaximum
  1223. } NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE;
  1224. //
  1225. //  The following structure defines the wake-up capabilities of the device.
  1226. //
  1227. typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES
  1228. {
  1229.     NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
  1230.     NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
  1231.     NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
  1232. } NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;
  1233. //
  1234. // the following flags define the -enabled- wake-up capabilities of the device
  1235. // passed in the Flags field of NDIS_PNP_CAPABILITIES structure
  1236. //
  1237. #define NDIS_DEVICE_WAKE_UP_ENABLE                          0x00000001
  1238. #define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE            0x00000002
  1239. #define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE             0x00000004
  1240. //
  1241. //  This structure defines general PnP capabilities of the miniport driver.
  1242. //
  1243. typedef struct _NDIS_PNP_CAPABILITIES
  1244. {
  1245.     ULONG                           Flags;
  1246.     NDIS_PM_WAKE_UP_CAPABILITIES    WakeUpCapabilities;
  1247. } NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
  1248. //
  1249. // Defines the attachment types for FDDI (OID_FDDI_ATTACHMENT_TYPE).
  1250. //
  1251. typedef enum _NDIS_FDDI_ATTACHMENT_TYPE
  1252. {
  1253.     NdisFddiTypeIsolated = 1,
  1254.     NdisFddiTypeLocalA,
  1255.     NdisFddiTypeLocalB,
  1256.     NdisFddiTypeLocalAB,
  1257.     NdisFddiTypeLocalS,
  1258.     NdisFddiTypeWrapA,
  1259.     NdisFddiTypeWrapB,
  1260.     NdisFddiTypeWrapAB,
  1261.     NdisFddiTypeWrapS,
  1262.     NdisFddiTypeCWrapA,
  1263.     NdisFddiTypeCWrapB,
  1264.     NdisFddiTypeCWrapS,
  1265.     NdisFddiTypeThrough
  1266. } NDIS_FDDI_ATTACHMENT_TYPE, *PNDIS_FDDI_ATTACHMENT_TYPE;
  1267. //
  1268. // Defines the ring management states for FDDI (OID_FDDI_RING_MGT_STATE).
  1269. //
  1270. typedef enum _NDIS_FDDI_RING_MGT_STATE
  1271. {
  1272.     NdisFddiRingIsolated = 1,
  1273.     NdisFddiRingNonOperational,
  1274.     NdisFddiRingOperational,
  1275.     NdisFddiRingDetect,
  1276.     NdisFddiRingNonOperationalDup,
  1277.     NdisFddiRingOperationalDup,
  1278.     NdisFddiRingDirected,
  1279.     NdisFddiRingTrace
  1280. } NDIS_FDDI_RING_MGT_STATE, *PNDIS_FDDI_RING_MGT_STATE;
  1281. //
  1282. // Defines the Lconnection state for FDDI (OID_FDDI_LCONNECTION_STATE).
  1283. //
  1284. typedef enum _NDIS_FDDI_LCONNECTION_STATE
  1285. {
  1286.     NdisFddiStateOff = 1,
  1287.     NdisFddiStateBreak,
  1288.     NdisFddiStateTrace,
  1289.     NdisFddiStateConnect,
  1290.     NdisFddiStateNext,
  1291.     NdisFddiStateSignal,
  1292.     NdisFddiStateJoin,
  1293.     NdisFddiStateVerify,
  1294.     NdisFddiStateActive,
  1295.     NdisFddiStateMaintenance
  1296. } NDIS_FDDI_LCONNECTION_STATE, *PNDIS_FDDI_LCONNECTION_STATE;
  1297. //
  1298. // Defines the medium subtypes for WAN medium (OID_WAN_MEDIUM_SUBTYPE).
  1299. // Sub-medium used only by connection-oriented WAN devices
  1300. // i.e. NdisMediumWan, NdisMediumCoWan.
  1301. //
  1302. typedef enum _NDIS_WAN_MEDIUM_SUBTYPE
  1303. {
  1304.     NdisWanMediumHub,
  1305.     NdisWanMediumX_25,
  1306.     NdisWanMediumIsdn,
  1307.     NdisWanMediumSerial,
  1308.     NdisWanMediumFrameRelay,
  1309.     NdisWanMediumAtm,
  1310.     NdisWanMediumSonet,
  1311.     NdisWanMediumSW56K,
  1312.     NdisWanMediumPPTP,
  1313.     NdisWanMediumL2TP,
  1314.     NdisWanMediumIrda,
  1315.     NdisWanMediumParallel,
  1316.     NdisWanMediumPppoe
  1317. } NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE;
  1318. //
  1319. // Defines the header format for WAN medium (OID_WAN_HEADER_FORMAT).
  1320. //
  1321. typedef enum _NDIS_WAN_HEADER_FORMAT
  1322. {
  1323.     NdisWanHeaderNative,        // src/dest based on subtype, followed by NLPID
  1324.     NdisWanHeaderEthernet       // emulation of ethernet header
  1325. } NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT;
  1326. //
  1327. // Defines the line quality on a WAN line (OID_WAN_QUALITY_OF_SERVICE).
  1328. //
  1329. typedef enum _NDIS_WAN_QUALITY
  1330. {
  1331.     NdisWanRaw,
  1332.     NdisWanErrorControl,
  1333.     NdisWanReliable
  1334. } NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
  1335. //
  1336. // Defines a protocol's WAN specific capabilities (OID_WAN_PROTOCOL_CAPS).
  1337. //
  1338. typedef struct _NDIS_WAN_PROTOCOL_CAPS
  1339. {
  1340.     IN  ULONG   Flags;
  1341.     IN  ULONG   Reserved;
  1342. } NDIS_WAN_PROTOCOL_CAPS, *PNDIS_WAN_PROTOCOL_CAPS;
  1343. //
  1344. // Flags used in NDIS_WAN_PROTOCOL_CAPS
  1345. //
  1346. #define WAN_PROTOCOL_KEEPS_STATS    0x00000001
  1347. //
  1348. // Defines the state of a token-ring adapter (OID_802_5_CURRENT_RING_STATE).
  1349. //
  1350. typedef enum _NDIS_802_5_RING_STATE
  1351. {
  1352.     NdisRingStateOpened = 1,
  1353.     NdisRingStateClosed,
  1354.     NdisRingStateOpening,
  1355.     NdisRingStateClosing,
  1356.     NdisRingStateOpenFailure,
  1357.     NdisRingStateRingFailure
  1358. } NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE;
  1359. //
  1360. // Defines the state of the LAN media
  1361. //
  1362. typedef enum _NDIS_MEDIA_STATE
  1363. {
  1364.     NdisMediaStateConnected,
  1365.     NdisMediaStateDisconnected
  1366. } NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
  1367. //
  1368. // The following is set on a per-packet basis as OOB data with NdisClass802_3Priority
  1369. //
  1370. typedef ULONG   Priority_802_3;         // 0-7 priority levels
  1371. //
  1372. //  The following structure is used to query OID_GEN_CO_LINK_SPEED and
  1373. //  OID_GEN_CO_MINIMUM_LINK_SPEED. The first OID will return the current
  1374. //  link speed of the adapter. The second will return the minimum link speed
  1375. //  the adapter is capable of.
  1376. //
  1377. typedef struct _NDIS_CO_LINK_SPEED
  1378. {
  1379.     ULONG   Outbound;
  1380.     ULONG   Inbound;
  1381. } NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED;
  1382. #ifndef _NDIS_
  1383. typedef int NDIS_STATUS, *PNDIS_STATUS;
  1384. #endif
  1385. //
  1386. //  Structure to be used for OID_GEN_SUPPORTED_GUIDS.
  1387. //  This structure describes an OID to GUID mapping.
  1388. //  Or a Status to GUID mapping.
  1389. //  When ndis receives a request for a give GUID it will
  1390. //  query the miniport with the supplied OID.
  1391. //
  1392. typedef struct _NDIS_GUID
  1393. {
  1394.     GUID            Guid;
  1395.     union
  1396.     {
  1397.         NDIS_OID    Oid;
  1398.         NDIS_STATUS Status;
  1399.     };
  1400.     ULONG       Size;               //  Size of the data element. If the GUID
  1401.                                     //  represents an array then this is the
  1402.                                     //  size of an element in the array.
  1403.                                     //  This is -1 for strings.
  1404.     ULONG       Flags;
  1405. } NDIS_GUID, *PNDIS_GUID;
  1406. #define fNDIS_GUID_TO_OID           0x00000001
  1407. #define fNDIS_GUID_TO_STATUS        0x00000002
  1408. #define fNDIS_GUID_ANSI_STRING      0x00000004
  1409. #define fNDIS_GUID_UNICODE_STRING   0x00000008
  1410. #define fNDIS_GUID_ARRAY            0x00000010
  1411. #define fNDIS_GUID_ALLOW_READ       0x00000020
  1412. #define fNDIS_GUID_ALLOW_WRITE      0x00000040
  1413. //
  1414. // Ndis Packet Filter Bits (OID_GEN_CURRENT_PACKET_FILTER).
  1415. //
  1416. #define NDIS_PACKET_TYPE_DIRECTED               0x00000001
  1417. #define NDIS_PACKET_TYPE_MULTICAST              0x00000002
  1418. #define NDIS_PACKET_TYPE_ALL_MULTICAST          0x00000004
  1419. #define NDIS_PACKET_TYPE_BROADCAST              0x00000008
  1420. #define NDIS_PACKET_TYPE_SOURCE_ROUTING         0x00000010
  1421. #define NDIS_PACKET_TYPE_PROMISCUOUS            0x00000020
  1422. #define NDIS_PACKET_TYPE_SMT                    0x00000040
  1423. #define NDIS_PACKET_TYPE_ALL_LOCAL              0x00000080
  1424. #define NDIS_PACKET_TYPE_GROUP                  0x00001000
  1425. #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL         0x00002000
  1426. #define NDIS_PACKET_TYPE_FUNCTIONAL             0x00004000
  1427. #define NDIS_PACKET_TYPE_MAC_FRAME              0x00008000
  1428. //
  1429. // Ndis Token-Ring Ring Status Codes (OID_802_5_CURRENT_RING_STATUS).
  1430. //
  1431. #define NDIS_RING_SIGNAL_LOSS                   0x00008000
  1432. #define NDIS_RING_HARD_ERROR                    0x00004000
  1433. #define NDIS_RING_SOFT_ERROR                    0x00002000
  1434. #define NDIS_RING_TRANSMIT_BEACON               0x00001000
  1435. #define NDIS_RING_LOBE_WIRE_FAULT               0x00000800
  1436. #define NDIS_RING_AUTO_REMOVAL_ERROR            0x00000400
  1437. #define NDIS_RING_REMOVE_RECEIVED               0x00000200
  1438. #define NDIS_RING_COUNTER_OVERFLOW              0x00000100
  1439. #define NDIS_RING_SINGLE_STATION                0x00000080
  1440. #define NDIS_RING_RING_RECOVERY                 0x00000040
  1441. //
  1442. // Ndis protocol option bits (OID_GEN_PROTOCOL_OPTIONS).
  1443. //
  1444. #define NDIS_PROT_OPTION_ESTIMATED_LENGTH               0x00000001
  1445. #define NDIS_PROT_OPTION_NO_LOOPBACK                    0x00000002
  1446. #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT              0x00000004
  1447. #define NDIS_PROT_OPTION_SEND_RESTRICTED                0x00000008
  1448. //
  1449. // Ndis MAC option bits (OID_GEN_MAC_OPTIONS).
  1450. //
  1451. #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA             0x00000001
  1452. #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED              0x00000002
  1453. #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND              0x00000004
  1454. #define NDIS_MAC_OPTION_NO_LOOPBACK                     0x00000008
  1455. #define NDIS_MAC_OPTION_FULL_DUPLEX                     0x00000010
  1456. #define NDIS_MAC_OPTION_EOTX_INDICATION                 0x00000020
  1457. #define NDIS_MAC_OPTION_8021P_PRIORITY                  0x00000040
  1458. #define NDIS_MAC_OPTION_SUPPORTS_MAC_ADDRESS_OVERWRITE  0x00000080
  1459. #define NDIS_MAC_OPTION_RECEIVE_AT_DPC                  0x00000100
  1460. #define NDIS_MAC_OPTION_8021Q_VLAN                      0x00000200
  1461. #define NDIS_MAC_OPTION_RESERVED                        0x80000000
  1462. //
  1463. //  NDIS media capabilities bits (OID_GEN_MEDIA_CAPABILITIES).
  1464. //
  1465. #define NDIS_MEDIA_CAP_TRANSMIT                 0x00000001  // Supports sending data
  1466. #define NDIS_MEDIA_CAP_RECEIVE                  0x00000002  // Supports receiving data
  1467. //
  1468. //  NDIS MAC option bits for OID_GEN_CO_MAC_OPTIONS.
  1469. //
  1470. #define NDIS_CO_MAC_OPTION_DYNAMIC_LINK_SPEED   0x00000001
  1471. //
  1472. // The following is set on a per-packet basis as OOB data with NdisClassIrdaPacketInfo
  1473. // This is the per-packet info specified on a per-packet basis
  1474. //
  1475. typedef struct _NDIS_IRDA_PACKET_INFO
  1476. {
  1477.     ULONG                       ExtraBOFs;
  1478.     ULONG                       MinTurnAroundTime;
  1479. } NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO;
  1480. #ifdef WIRELESS_WAN
  1481. //
  1482. // Wireless WAN structure definitions
  1483. //
  1484. //
  1485. // currently defined Wireless network subtypes
  1486. //
  1487. typedef enum _NDIS_WW_NETWORK_TYPE
  1488. {
  1489.     NdisWWGeneric,
  1490.     NdisWWMobitex,
  1491.     NdisWWPinpoint,
  1492.     NdisWWCDPD,
  1493.     NdisWWArdis,
  1494.     NdisWWDataTAC,
  1495.     NdisWWMetricom,
  1496.     NdisWWGSM,
  1497.     NdisWWCDMA,
  1498.     NdisWWTDMA,
  1499.     NdisWWAMPS,
  1500.     NdisWWInmarsat,
  1501.     NdisWWpACT,
  1502.     NdisWWFlex,
  1503.     NdisWWIDEN
  1504. } NDIS_WW_NETWORK_TYPE;
  1505. //
  1506. // currently defined header formats
  1507. //
  1508. typedef enum _NDIS_WW_HEADER_FORMAT
  1509. {
  1510.     NdisWWDIXEthernetFrames,
  1511.     NdisWWMPAKFrames,
  1512.     NdisWWRDLAPFrames,
  1513.     NdisWWMDC4800Frames,
  1514.     NdisWWNCLFrames
  1515. } NDIS_WW_HEADER_FORMAT;
  1516. //
  1517. // currently defined encryption types
  1518. //
  1519. typedef enum _NDIS_WW_ENCRYPTION_TYPE
  1520. {
  1521.     NdisWWUnknownEncryption = -1,
  1522.     NdisWWNoEncryption,
  1523.     NdisWWDefaultEncryption,
  1524.     NdisWWDESEncryption,
  1525.     NdisWWRC2Encryption,
  1526.     NdisWWRC4Encryption,
  1527.     NdisWWRC5Encryption
  1528. } NDIS_WW_ENCRYPTION_TYPE, *PNDIS_WW_ENCRYPTION_TYPE;
  1529. typedef enum _WW_ADDRESS_FORMAT
  1530. {
  1531.     WW_IEEE_ADDRESS = 0,
  1532.     WW_MOBITEX_MAN_ADDRESS,
  1533.     WW_DATATAC_RDLAP_ADDRESS,
  1534.     WW_DATATAC_MDC4800_ADDRESS,
  1535.     WW_DATATAC_RESERVED,
  1536.     WW_IPv4_ADDRESS,
  1537.     WW_IPv6_ADDRESS,
  1538.     WW_PROPRIETARY_ADDRESS,
  1539. } WW_ADDRESS_FORMAT;
  1540. typedef enum _WW_GEN_SUM_EXCEPTION
  1541. {
  1542.     SIM_STATUS_OK = 0,
  1543.     SIM_STATUS_ERROR,
  1544.     SIM_STATUS_MISSING,
  1545.     SIM_STATUS_NO_RESPONSE,
  1546.     SIM_STATUS_REMOVED,
  1547.     SIM_STATUS_CRYPT_ERROR,
  1548.     SIM_STATUS_AUTH_ERROR,
  1549.     SIM_STATUS_NEED_PIN,
  1550.     SIM_STATUS_NEED_PUK,
  1551.     SIM_STATUS_WRONG,
  1552. } WW_GEN_SIM_EXCEPTION;
  1553. //
  1554. // OID_WW_GEN_INDICATION_REQUEST
  1555. //
  1556. typedef struct _NDIS_WW_INDICATION_REQUEST
  1557. {
  1558.     NDIS_OID            Oid;                    // IN
  1559.     ULONG               uIndicationFlag;        // IN
  1560.     ULONG               uApplicationToken;      // IN OUT
  1561.     HANDLE              hIndicationHandle;      // IN OUT
  1562.     INT                 iPollingInterval;       // IN OUT
  1563.     NDIS_VAR_DATA_DESC  InitialValue;           // IN OUT
  1564.     NDIS_VAR_DATA_DESC  OIDIndicationValue;     // OUT - only valid after indication
  1565.     NDIS_VAR_DATA_DESC  TriggerValue;           // IN
  1566. } NDIS_WW_INDICATION_REQUEST, *PNDIS_WW_INDICATION_REQUEST;
  1567. #define OID_INDICATION_REQUEST_ENABLE           0x0000
  1568. #define OID_INDICATION_REQUEST_CANCEL           0x0001
  1569. //
  1570. // OID_WW_GEN_DEVICE_INFO
  1571. //
  1572. typedef struct _WW_DEVICE_INFO
  1573. {
  1574.     NDIS_VAR_DATA_DESC  Manufacturer;
  1575.     NDIS_VAR_DATA_DESC  ModelNum;
  1576.     NDIS_VAR_DATA_DESC  SWVersionNum;
  1577.     NDIS_VAR_DATA_DESC  SerialNum;
  1578. } WW_DEVICE_INFO, *PWW_DEVICE_INFO;
  1579. //
  1580. // OID_WW_GEN_OPERATION_MODE
  1581. //
  1582. typedef INT WW_OPERATION_MODE;                  //  0 = Normal mode
  1583.                                                 //  1 = Power saving mode
  1584.                                                 // -1 = mode unknown
  1585. //
  1586. // OID_WW_GEN_LOCK_STATUS
  1587. //
  1588. typedef INT WW_LOCK_STATUS;                     //  0 = unlocked
  1589.                                                 //  1 = locked
  1590.                                                 // -1 = unknown lock status
  1591. //
  1592. // OID_WW_GEN_DISABLE_TRANSMITTER
  1593. //
  1594. typedef INT WW_DISABLE_TRANSMITTER;             //  0 = transmitter enabled
  1595.                                                 //  1 = transmitter disabled
  1596.                                                 // -1 = unknown value
  1597. //
  1598. // OID_WW_GEN_NETWORK_ID
  1599. //
  1600. typedef NDIS_VAR_DATA_DESC  WW_NETWORK_ID;
  1601. //
  1602. // OID_WW_GEN_PERMANENT_ADDRESS 
  1603. //
  1604. typedef NDIS_VAR_DATA_DESC  WW_PERMANENT_ADDRESS;
  1605. //
  1606. // OID_WW_GEN_CURRENT_ADDRESS   
  1607. //
  1608. typedef struct _WW_CURRENT_ADDRESS
  1609. {
  1610.     NDIS_WW_HEADER_FORMAT   Format;
  1611.     NDIS_VAR_DATA_DESC      Address;
  1612. } WW_CURRENT_ADDRESS, *PWW_CURRENT_ADDRESS;
  1613. //
  1614. // OID_WW_GEN_SUSPEND_DRIVER
  1615. //
  1616. typedef BOOLEAN WW_SUSPEND_DRIVER;              // 0 = driver operational
  1617.                                                 // 1 = driver suspended
  1618. //
  1619. // OID_WW_GEN_BASESTATION_ID
  1620. //
  1621. typedef NDIS_VAR_DATA_DESC  WW_BASESTATION_ID;
  1622. //
  1623. // OID_WW_GEN_CHANNEL_ID
  1624. //
  1625. typedef NDIS_VAR_DATA_DESC  WW_CHANNEL_ID;
  1626. //
  1627. // OID_WW_GEN_ENCRYPTION_STATE
  1628. //
  1629. typedef BOOLEAN WW_ENCRYPTION_STATE;            // 0 = if encryption is disabled
  1630.                                                 // 1 = if encryption is enabled
  1631. //
  1632. // OID_WW_GEN_CHANNEL_QUALITY
  1633. //
  1634. typedef INT     WW_CHANNEL_QUALITY;             //  0 = Not in network contact,
  1635.                                                 // 1-100 = Quality of Channel (100 is highest quality).
  1636.                                                 // -1 = channel quality is unknown
  1637. //
  1638. // OID_WW_GEN_REGISTRATION_STATUS
  1639. //
  1640. typedef INT     WW_REGISTRATION_STATUS;         //  0 = Registration denied
  1641.                                                 //  1 = Registration pending
  1642.                                                 //  2 = Registered
  1643.                                                 // -1 = unknown registration status
  1644. //
  1645. // OID_WW_GEN_RADIO_LINK_SPEED
  1646. //
  1647. typedef ULONG   WW_RADIO_LINK_SPEED;            // Bits per second.
  1648. //
  1649. // OID_WW_GEN_LATENCY
  1650. //
  1651. typedef ULONG   WW_LATENCY;                     //  milliseconds
  1652. //
  1653. // OID_WW_GEN_BATTERY_LEVEL
  1654. //
  1655. typedef INT     WW_BATTERY_LEVEL;               //  0-100 = battery level in percentage
  1656.                                                 //  (100=fully charged)
  1657.                                                 // -1 = unknown battery level.
  1658. //
  1659. // OID_WW_GEN_EXTERNAL_POWER
  1660. //
  1661. typedef INT     WW_EXTERNAL_POWER;              //  0 = no external power connected
  1662.                                                 //  1 = external power connected
  1663.                                                 //  -1 = unknown
  1664. //
  1665. // Ping Address structure
  1666. //
  1667. typedef struct _WW_PING_ADDRESS
  1668. {
  1669.     WW_ADDRESS_FORMAT   Format;                 // IN
  1670.     NDIS_VAR_DATA_DESC  TargetAddress;          // IN
  1671.     UINT                uTime;                  // OUT in milleseconds
  1672. } WW_PING_ADDRESS;
  1673. //
  1674. // RSSI structure
  1675. //
  1676. typedef struct _WW_RECEIVE_SIGNAL_STRENGTH_INDICATOR
  1677. {
  1678.     INT                 iDecibels;              // value in DB
  1679.     INT                 iFactor;                // power of 10
  1680. } WW_RECEIVE_SIGNAL_STRENGTH_INDICATOR;
  1681. //
  1682. // SIM status structure
  1683. //
  1684. typedef struct _WW_SIM_STATUS
  1685. {
  1686.     BOOLEAN             bHasSIM;                // TRUE = SIM required
  1687.     BOOLEAN             bBlocked;               // TRUE = SIM PIN access blocked
  1688.     BOOLEAN             bLocked;                // TRUE = PIN need to access device
  1689.     BOOLEAN             bInitialized;           // TRUE = SIM initialized
  1690.     UINT                uCountdown;             // = remaining number of attempt to
  1691.                                                 // enter correct PIN
  1692. } WW_SIM_STATUS;
  1693. //
  1694. // enable SIM PIN structure
  1695. //
  1696. typedef struct _WW_ENABLE_SIM_PIN
  1697. {
  1698.     BOOLEAN             bEnabled;               // TRUE = security feature of SIM enabled
  1699.     NDIS_VAR_DATA_DESC  CurrentPIN;             // describes buffer containing PIN value
  1700. } WW_ENABLE_SIM_PIN;
  1701. //
  1702. // SIM PIN structure
  1703. //
  1704. typedef struct _WW_CHANGE_SIM_PIN
  1705. {
  1706.     NDIS_VAR_DATA_DESC  OldPIN;                 // describes buffer containing OLD PIN
  1707.     NDIS_VAR_DATA_DESC  NewPIN;                 // describes buffer containing new PIN
  1708. } WW_CHANGE_SIM_PIN;
  1709. //
  1710. // new change SIM PUK structure
  1711. //
  1712. typedef NDIS_VAR_DATA_DESC      WW_ENABLE_SIM_PUK;
  1713. //
  1714. // OID_WW_MET_FUNCTION
  1715. //
  1716. typedef NDIS_VAR_DATA_DESC      WW_MET_FUNCTION;
  1717. //
  1718. // OID_WW_TAC_COMPRESSION
  1719. //
  1720. typedef BOOLEAN WW_TAC_COMPRESSION;             // Determines whether or not network level compression
  1721.                                                 // is being used.
  1722. //
  1723. // OID_WW_TAC_SET_CONFIG
  1724. //
  1725. // The DataTAC OID that referenced this object has been superceeded. The
  1726. // definition is still included for historical purposes only and should not
  1727. // be used
  1728. //
  1729. typedef struct _WW_TAC_SETCONFIG
  1730. {
  1731.     NDIS_VAR_DATA_DESC  RCV_MODE;               // Select confirmed/unconfirmed
  1732.                                                 // receive mode
  1733.     NDIS_VAR_DATA_DESC  TX_CONTROL;             // Enable or Disable transmitter
  1734.     NDIS_VAR_DATA_DESC  RX_CONTROL;             // Enable or disable radio in
  1735.                                                 // the modem
  1736.     NDIS_VAR_DATA_DESC  FLOW_CONTROL;           // Set flow control between DTE
  1737.                                                 // and DCE
  1738.     NDIS_VAR_DATA_DESC  RESET_CNF;              // Reset configuration to
  1739.                                                 // default
  1740.     NDIS_VAR_DATA_DESC  READ_CNF;               // Read the current
  1741.                                                 // configuration
  1742. } WW_TAC_SETCONFIG, *PWW_TAC_SETCONFIG;
  1743. //
  1744. // OID_WW_TAC_GET_STATUS
  1745. //
  1746. // The DataTAC OID that referenced this object has been superceeded. The
  1747. // definition is still included for historical purposes only and should not
  1748. // be used
  1749. //
  1750. typedef struct _WW_TAC_GETSTATUS
  1751. {
  1752.     BOOLEAN                 Action;             // Set = Execute command.
  1753.     NDIS_VAR_DATA_DESC      Command;
  1754.     NDIS_VAR_DATA_DESC      Option;
  1755.     NDIS_VAR_DATA_DESC      Response;           // The response to the requested command
  1756.                                                 // - max. length of string is 256 octets.
  1757. } WW_TAC_GETSTATUS, *PWW_TAC_GETSTATUS;
  1758. //
  1759. // OID_WW_TAC_USER_HEADER
  1760. //
  1761. typedef NDIS_VAR_DATA_DESC  WW_TAC_USERHEADER;  // This will hold the user header - Max. 64 octets.
  1762. // August 25, 1998 @14:16 EDT by Emil Sturniolo - WRQ
  1763. // added new DataTAC get response structure
  1764. typedef  struct _WW_TAC_GET_RESPONSE
  1765. {
  1766.     UINT                SDUTag;                 // previousl assigned token
  1767.     NDIS_VAR_DATA_DESC  Response;               // response - max 2048 octets
  1768. } WW_TAC_GET_RESPONSE;
  1769. //
  1770. // DataTAC disable receiver structure
  1771. //
  1772. typedef INT WW_TAC_DISABLE_RECEIVER;            // 0 = receiver enabled
  1773.                                                 // 1 = receiver disabled
  1774.                                                 // -1 = state of recevier unknown
  1775. //
  1776. // DataTAC antenna mode structure
  1777. //
  1778. typedef INT WW_TAC_ANTENNA_MODE;                // 0 = Automatic Antenna selection
  1779.                                                 // 1 = Always use primary antenna
  1780.                                                 // 2 = Always use secondary antenna
  1781.                                                 // -1 = Antenna algorithm unknown
  1782. //
  1783. // DataTAC get response structure
  1784. //
  1785. typedef INT WW_TAC_FLUSH_DATA;                  // 1 = flush buffered data destine to net
  1786.                                                 // 2 = flush buffered data received from net
  1787.                                                 // 3 = flush all buffered data
  1788. //
  1789. // DataTAC shutdown device structure
  1790. //
  1791. typedef INT WW_TAC_SHUTDOWN_DEVICE;             // 0 = device enabled
  1792.                                                 // 1 = device disabled
  1793.                                                 // -1 = state of device unknown
  1794. //
  1795. // DataTAC transmitter keyed structure
  1796. //
  1797. typedef BOOLEAN WW_TAC_TRANSMITTER_KEYED;
  1798. //
  1799. // added new DataTAC system table structure
  1800. //
  1801. typedef struct _WW_TAC_SYSTEM_TABLE
  1802. {
  1803.     UINT        SystemCount;
  1804.     UCHAR       ContryTable[32];
  1805.     UCHAR       PrefixTable[32];
  1806.     UCHAR       IDTable[32];
  1807. } WW_TAC_SYSTEM_TABLE;
  1808. //
  1809. // added new DataTAC channel table structure
  1810. //
  1811. typedef struct _WW_TAC_CHANNEL_TABLE
  1812. {
  1813.     UINT        ChannelCount;
  1814.     UCHAR       ChannelTable[64];
  1815.     UCHAR       AttrTable[64];
  1816. } WW_TAC_CHANNEL_TABLE;
  1817. //
  1818. // added new DataTAC statistics structure
  1819. //
  1820. typedef NDIS_VAR_DATA_DESC WW_TAC_STATISTICS;
  1821. //
  1822. // OID_WW_ARD_SNDCP
  1823. //
  1824. // The ARDIS OIDs that referenced these object have been deprecated and merged
  1825. // with the new DataTAC objects. Their definition are still included for
  1826. // historical purposes only and should not be used.
  1827. //
  1828. typedef struct _WW_ARD_SNDCP
  1829. {
  1830.     NDIS_VAR_DATA_DESC  Version;                // The version of SNDCP protocol supported.
  1831.     INT                 BlockSize;              // The block size used for SNDCP
  1832.     INT                 Window;                 // The window size used in SNDCP
  1833. } WW_ARD_SNDCP, *PWW_ARD_SNDCP;
  1834. //
  1835. // OID_WW_ARD_TMLY_MSG
  1836. //
  1837. typedef BOOLEAN WW_ARD_CHANNEL_STATUS;          // The current status of the inbound RF Channel.
  1838. //
  1839. // OID_WW_ARD_DATAGRAM
  1840. //
  1841. typedef struct _WW_ARD_DATAGRAM
  1842. {
  1843.     BOOLEAN             LoadLevel;              // Byte that contains the load level info.
  1844.     INT                 SessionTime;            // Datagram session time remaining.
  1845.     NDIS_VAR_DATA_DESC  HostAddr;               // Host address.
  1846.     NDIS_VAR_DATA_DESC  THostAddr;              // Test host address.
  1847. } WW_ARD_DATAGRAM, *PWW_ARD_DATAGRAM;
  1848. //
  1849. // OID_WW_CDPD_SPNI
  1850. //
  1851. typedef struct _WW_CDPD_SPNI
  1852. {
  1853.     ULONG   SPNI[10];                           //10 16-bit service provider network IDs
  1854.     INT     OperatingMode;                      // 0 = ignore SPNI,
  1855.                                                 // 1 = require SPNI from list,
  1856.                                                 // 2 = prefer SPNI from list.
  1857.                                                 // 3 = exclude SPNI from list.
  1858. } WW_CDPD_SPNI, *PWW_CDPD_SPNI;
  1859. //
  1860. // OID_WW_CDPD_WASI
  1861. //
  1862. typedef struct _WW_CDPD_WIDE_AREA_SERVICE_ID
  1863. {
  1864.     ULONG   WASI[10];                           //10 16-bit wide area service IDs
  1865.     INT     OperatingMode;                      // 0 = ignore WASI,
  1866.                                                 // 1 = Require WASI from list,
  1867.                                                 // 2 = prefer WASI from list
  1868.                                                 // 3 = exclude WASI from list.
  1869. } WW_CDPD_WIDE_AREA_SERVICE_ID, *PWW_CDPD_WIDE_AREA_SERVICE_ID;
  1870. //
  1871. // OID_WW_CDPD_AREA_COLOR
  1872. //
  1873. typedef INT     WW_CDPD_AREA_COLOR;
  1874. //
  1875. // OID_WW_CDPD_TX_POWER_LEVEL
  1876. //
  1877. typedef ULONG   WW_CDPD_TX_POWER_LEVEL;
  1878. //
  1879. // OID_WW_CDPD_EID
  1880. //
  1881. typedef NDIS_VAR_DATA_DESC  WW_CDPD_EID;
  1882. //
  1883. // OID_WW_CDPD_HEADER_COMPRESSION
  1884. //
  1885. typedef INT WW_CDPD_HEADER_COMPRESSION;         //  0 = no header compression,
  1886.                                                 //  1 = always compress headers,
  1887.                                                 //  2 = compress headers if MD-IS does
  1888.                                                 // -1 = unknown
  1889. //
  1890. // OID_WW_CDPD_DATA_COMPRESSION
  1891. //
  1892. typedef INT WW_CDPD_DATA_COMPRESSION;           // 0  = no data compression,
  1893.                                                 // 1  = data compression enabled
  1894.                                                 // -1 = unknown
  1895. //
  1896. // OID_WW_CDPD_CHANNEL_SELECT
  1897. //
  1898. typedef struct _WW_CDPD_CHANNEL_SELECT
  1899. {
  1900.     ULONG   ChannelID;                          // channel number
  1901.     ULONG   fixedDuration;                      // duration in seconds
  1902. } WW_CDPD_CHANNEL_SELECT, *PWW_CDPD_CHANNEL_SELECT;
  1903. //
  1904. // OID_WW_CDPD_CHANNEL_STATE
  1905. //
  1906. typedef enum _WW_CDPD_CHANNEL_STATE
  1907. {
  1908.     CDPDChannelNotAvail,
  1909.     CDPDChannelScanning,
  1910.     CDPDChannelInitAcquired,
  1911.     CDPDChannelAcquired,
  1912.     CDPDChannelSleeping,
  1913.     CDPDChannelWaking,
  1914.     CDPDChannelCSDialing,
  1915.     CDPDChannelCSRedial,
  1916.     CDPDChannelCSAnswering,
  1917.     CDPDChannelCSConnected,
  1918.     CDPDChannelCSSuspended
  1919. } WW_CDPD_CHANNEL_STATE, *PWW_CDPD_CHANNEL_STATE;
  1920. //
  1921. // OID_WW_CDPD_NEI
  1922. //
  1923. typedef enum _WW_CDPD_NEI_FORMAT
  1924. {
  1925.     CDPDNeiIPv4,
  1926.     CDPDNeiCLNP,
  1927.     CDPDNeiIPv6
  1928. } WW_CDPD_NEI_FORMAT, *PWW_CDPD_NEI_FORMAT;
  1929. typedef enum _WW_CDPD_NEI_TYPE
  1930. {
  1931.     CDPDNeiIndividual,
  1932.     CDPDNeiMulticast,
  1933.     CDPDNeiBroadcast
  1934. } WW_CDPD_NEI_TYPE;
  1935. typedef struct _WW_CDPD_NEI
  1936. {
  1937.     ULONG               uNeiIndex;
  1938.     WW_CDPD_NEI_FORMAT  NeiFormat;
  1939.     WW_CDPD_NEI_TYPE    NeiType;
  1940.     WORD                NeiGmid;                // group member identifier, only
  1941.                                                 // meaningful if NeiType ==
  1942.                                                 // CDPDNeiMulticast
  1943.     NDIS_VAR_DATA_DESC  NeiAddress;
  1944. } WW_CDPD_NEI;
  1945. //
  1946. // OID_WW_CDPD_NEI_STATE
  1947. //
  1948. typedef enum _WW_CDPD_NEI_STATE
  1949. {
  1950.     CDPDUnknown,
  1951.     CDPDRegistered,
  1952.     CDPDDeregistered
  1953. } WW_CDPD_NEI_STATE, *PWW_CDPD_NEI_STATE;
  1954. typedef enum _WW_CDPD_NEI_SUB_STATE
  1955. {
  1956.     CDPDPending,                                // Registration pending
  1957.     CDPDNoReason,                               // Registration denied - no reason given
  1958.     CDPDMDISNotCapable,                         // Registration denied - MD-IS not capable of
  1959.                                                 //  handling M-ES at this time
  1960.     CDPDNEINotAuthorized,                       // Registration denied - NEI is not authorized to
  1961.                                                 //  use this subnetwork
  1962.     CDPDInsufficientAuth,                       // Registration denied - M-ES gave insufficient
  1963.                                                 //  authentication credentials
  1964.     CDPDUnsupportedAuth,                        // Registration denied - M-ES gave unsupported
  1965.                                                 //  authentication credentials
  1966.     CDPDUsageExceeded,                          // Registration denied - NEI has exceeded usage
  1967.                                                 //  limitations
  1968.     CDPDDeniedThisNetwork                       // Registration denied on this network, service
  1969.                                                 //  may be obtained on alternate Service Provider
  1970.                                                 //  network
  1971. } WW_CDPD_NEI_SUB_STATE;
  1972. typedef struct _WW_CDPD_NEI_REG_STATE
  1973. {
  1974.     ULONG               uNeiIndex;
  1975.     WW_CDPD_NEI_STATE   NeiState;
  1976.     WW_CDPD_NEI_SUB_STATE NeiSubState;
  1977. } WW_CDPD_NEI_REG_STATE, *PWW_CDPD_NEI_REG_STATE;
  1978. //
  1979. // OID_WW_CDPD_SERVICE_PROVIDER_IDENTIFIER
  1980. //
  1981. typedef struct _WW_CDPD_SERVICE_PROVIDER_ID
  1982. {
  1983.     ULONG   SPI[10];                            //10 16-bit service provider IDs
  1984.     INT     OperatingMode;                      // 0 = ignore SPI,
  1985.                                                 // 1 = require SPI from list,
  1986.                                                 // 2 = prefer SPI from list.
  1987.                                                 // 3 = SPI from list is excluded
  1988. } WW_CDPD_SERVICE_PROVIDER_ID, *PWW_CDPD_SERVICE_PROVIDER_ID;
  1989. //
  1990. // OID_WW_CDPD_SLEEP_MODE
  1991. //
  1992. typedef INT WW_CDPD_SLEEP_MODE;
  1993. //
  1994. // OID_WW_CDPD_TEI
  1995. //
  1996. typedef ULONG   WW_CDPD_TEI;
  1997. //
  1998. // OID_WW_CDPD_CIRCUIT_SWITCHED
  1999. //
  2000. // The CDPD OID that referenced this object has been deprecated and superceeded
  2001. // by new discrete CDPD objects. The definition is still included for
  2002. // historical purposes only and should not be used.
  2003. //
  2004. typedef struct _WW_CDPD_CIRCUIT_SWITCHED
  2005. {
  2006.     INT                 service_preference;  // -1 = unknown,
  2007.                                                 //  0 = always use packet switched CDPD,
  2008.                                                 //  1 = always use CS CDPD via AMPS,
  2009.                                                 //  2 = always use CS CDPD via PSTN,
  2010.                                                 //  3 = use circuit switched via AMPS only
  2011.                                                 //  when packet switched is not available.
  2012.                                                 //  4 = use packet switched only when circuit
  2013.                                                 //  switched via AMPS is not available.
  2014.                                                 //  5 = device manuf. defined service
  2015.                                                 //  preference.
  2016.                                                 //  6 = device manuf. defined service
  2017.                                                 //  preference.
  2018.     
  2019.     INT                 service_status;         // -1 = unknown,
  2020.                                                 //  0 = packet switched CDPD,
  2021.                                                 //  1 = circuit switched CDPD via AMPS,
  2022.                                                 //  2 = circuit switched CDPD via PSTN.
  2023.     
  2024.     INT                 connect_rate;           //  CS connection bit rate (bits per second).
  2025.                                                 //  0 = no active connection,
  2026.                                                 // -1 = unknown
  2027.                                                 //  Dial code last used to dial.
  2028.     NDIS_VAR_DATA_DESC  dial_code[20];
  2029.     
  2030.     ULONG               sid;                    //  Current AMPS system ID
  2031.     
  2032.     INT                 a_b_side_selection;     // -1 = unknown,
  2033.                                                 //  0 = no AMPS service
  2034.                                                 //  1 = AMPS "A" side channels selected
  2035.                                                 //  2 = AMPS "B" side channels selected
  2036.     
  2037.     INT                 AMPS_channel;           // -1= unknown
  2038.                                                 //  0 = no AMPS service.
  2039.                                                 //  1-1023 = AMPS channel number in use
  2040.     
  2041.     ULONG               action;                 //  0 = no action
  2042.                                                 //  1 = suspend (hangup)
  2043.                                                 //  2 = dial
  2044.     
  2045.                                                 //  Default dial code for CS CDPD service
  2046.                                                 //  encoded as specified in the CS CDPD
  2047.                                                 //  implementor guidelines.
  2048.     NDIS_VAR_DATA_DESC  default_dial[20];
  2049.     
  2050.                                                 //  Number for the CS CDPD network to call
  2051.                                                 //  back the mobile, encoded as specified in
  2052.                                                 //  the CS CDPD implementor guidelines.
  2053.     NDIS_VAR_DATA_DESC  call_back[20];
  2054.     
  2055.     ULONG               sid_list[10];           //  List of 10 16-bit preferred AMPS
  2056.                                                 //  system IDs for CS CDPD.
  2057.     
  2058.     ULONG               inactivity_timer;       //  Wait time after last data before dropping
  2059.                                                 //  call.
  2060.                                                 //  0-65535 = inactivity time limit (seconds).
  2061.     
  2062.     ULONG               receive_timer;          //  secs. per CS-CDPD Implementor Guidelines.
  2063.     
  2064.     ULONG               conn_resp_timer;        //  secs. per CS-CDPD Implementor Guidelines.
  2065.     
  2066.     ULONG               reconn_resp_timer;      //  secs. per CS-CDPD Implementor Guidelines.
  2067.     
  2068.     ULONG               disconn_timer;          //  secs. per CS-CDPD Implementor Guidelines.
  2069.     
  2070.     ULONG               NEI_reg_timer;          //  secs. per CS-CDPD Implementor Guidelines.
  2071.     
  2072.     ULONG               reconn_retry_timer;     //  secs. per CS-CDPD Implementor Guidelines.
  2073.     
  2074.     ULONG               link_reset_timer;       //  secs. per CS-CDPD Implementor Guidelines.
  2075.     
  2076.     ULONG               link_reset_ack_timer;   //  secs. per CS-CDPD Implementor Guidelines.
  2077.     
  2078.     ULONG               n401_retry_limit;       //  per CS-CDPD Implementor Guidelines.
  2079.     
  2080.     ULONG               n402_retry_limit;       //  per CS-CDPD Implementor Guidelines.
  2081.     
  2082.     ULONG               n404_retry_limit;       //  per CS-CDPD Implementor Guidelines.
  2083.     
  2084.     ULONG               n405_retry_limit;       //  per CS-CDPD Implementor Guidelines.
  2085. } WW_CDPD_CIRCUIT_SWITCHED, *WW_PCDPD_CIRCUIT_SWITCHED;
  2086. typedef ULONG   WW_CDPD_RSSI;
  2087. //
  2088. // cs-cdpd service preference structure
  2089. //
  2090. typedef INT WW_CDPD_CS_SERVICE_PREFERENCE;      // 0 = use packet switched CDPD only
  2091.                                                 // 1 = use CS-CDPD via AMPS only
  2092.                                                 // 2 = use CS-CDPD via PSTN only
  2093.                                                 // 3 = use CS-CDPD via AMPS only
  2094.                                                 //     when packet switched is N/A
  2095.                                                 // 4 = use packet switched CDPD only
  2096.                                                 //     when  CS-CDPD via AMPS is N/A
  2097.                                                 // 5 = Device manufacture defined
  2098.                                                 //     service preference
  2099.                                                 // 6 = device manufacture defined
  2100.                                                 //     service preference
  2101.                                                 // -1 = unknown
  2102. //
  2103. // cs-cdpd service status structure
  2104. //
  2105. typedef INT WW_CDPD_CS_SERVICE_STATUS;          // 0 = Packet switched CDPD
  2106.                                                 // 1 = CS-CDPD via AMPS
  2107.                                                 // 2 = CS-CDPD via PSTN
  2108.                                                 // -1 = unknown
  2109. //
  2110. // cs-cdpd info structure
  2111. //
  2112. typedef struct _WW_CDPD_CS_INFO {
  2113.     INT                 ConnectRage;            // 0 = no active connection
  2114.                                                 // -1 = unknown
  2115.                                                 // all other values represent BPS
  2116.     NDIS_VAR_DATA_DESC  DialCode;               // describes buffer of last dial code
  2117.     UINT                SID;                    // Current AMPS System ID
  2118.     INT                 ABSideSelection;        // 0 = no AMPS service
  2119.                                                 // 1 = AMPS "A" side channel selected
  2120.                                                 // 2 = AMPS "B" side channel selected
  2121.     INT                 AMPSChannel;            // 0 = no AMPS service
  2122.                                                 // 1-1023 = current AMPS channel
  2123.                                                 // -1 = Unknown
  2124.                                                 // all other values reserved
  2125. } WW_CDPD_CS_INFO;
  2126. //
  2127. // cs-cdpd suspend structure
  2128. //
  2129. typedef UINT WW_CDPD_CS_SUSPEND;                // 0 = nop; 1 = hang up
  2130. //
  2131. // cs-cdpd default dial code structure
  2132. //
  2133. typedef NDIS_VAR_DATA_DESC WW_CDPD_DEFAULT_DIAL_CODE;   // max 20 octets
  2134. //
  2135. // cs-cdpd callback structure
  2136. //
  2137. typedef struct _WW_CDPD_CS_CALLBACK
  2138. {
  2139.     UINT                Enabled;                // 0 = disable; 1 = enable; -1 = unknown
  2140.     NDIS_VAR_DATA_DESC  Number;                 // descibes buffer contianing dial code
  2141.                                                 // max 20 octets
  2142. } WW_CDPD_CS_CALLBACK;
  2143. //
  2144. // cs-cdpd system id list structure
  2145. //
  2146. typedef struct _WW_CDPD_CS_SID_LIST
  2147. {
  2148.     UINT    AMPSystemId[10];
  2149. } WW_CDPD_CS_SID_LIST;
  2150. //
  2151. // cs-cdpd configuration structure
  2152. //
  2153. typedef struct _WW_CDPD_CS_CONFIGURATION
  2154. {
  2155.     UINT    InactivityTimer;                    // in seconds
  2156.     UINT    ReceiveTimer;                       // in seconds
  2157.     UINT    ConnResTimer;                       // in seconds
  2158.     UINT    ReconnRespTimer;                    // in seconds
  2159.     UINT    DisconnTimer;                       // in seconds
  2160.     UINT    NEIRegTimer;                        // in seconds
  2161.     UINT    ReconnRetryTimer;                   // in seconds
  2162.     UINT    LinkResetTimer;                     // in seconds
  2163.     UINT    LinkResetAckTimer;                  // in seconds
  2164.     UINT    n401RetryLimit;                     // per CS-CDPD Implementers guidelines
  2165.     UINT    n402RetryLimit;                     // per CS-CDPD Implementers guidelines
  2166.     UINT    n404RetryLimit;                     // per CS-CDPD Implementers guidelines
  2167.     UINT    n405RetryLimit;                     // per CS-CDPD Implementers guidelines
  2168. } WW_CDPD_CS_CONFIGURATION;
  2169. //
  2170. // OID_WW_PIN_LOC_AUTHORIZE
  2171. //
  2172. // The Pin Point OIDs that referenced the structures below have been
  2173. // deprecated from the PCCA STD-201 standard. Their definitions are still
  2174. // included for historical purposes only and should not be used.
  2175. //
  2176. typedef INT WW_PIN_AUTHORIZED;                  // 0  = unauthorized
  2177.                                                 // 1  = authorized
  2178.                                                 // -1 = unknown
  2179. //
  2180. // OID_WW_PIN_LAST_LOCATION
  2181. // OID_WW_PIN_LOC_FIX
  2182. //
  2183. typedef struct _WW_PIN_LOCATION
  2184. {
  2185.     INT     Latitude;                           // Latitude in hundredths of a second
  2186.     INT     Longitude;                          // Longitude in hundredths of a second
  2187.     INT     Altitude;                           // Altitude in feet
  2188.     INT     FixTime;                            // Time of the location fix, since midnight,  local time (of the
  2189.                                                 // current day), in tenths of a second
  2190.     INT     NetTime;                            // Current local network time of the current day, since midnight,
  2191.                                                 // in tenths of a second
  2192.     INT     LocQuality;                         // 0-100 = location quality
  2193.     INT     LatReg;                             // Latitude registration offset, in hundredths of a second
  2194.     INT     LongReg;                            // Longitude registration offset, in hundredths of a second
  2195.     INT     GMTOffset;                          // Offset in minutes of the local time zone from GMT
  2196. } WW_PIN_LOCATION, *PWW_PIN_LOCATION;
  2197. //
  2198. // The following is set on a per-packet basis as OOB data with NdisClassWirelessWanMbxMailbox
  2199. //
  2200. typedef ULONG   WW_MBX_MAILBOX_FLAG;            // 1 = set mailbox flag, 0 = do not set mailbox flag
  2201. //
  2202. // OID_WW_MBX_SUBADDR
  2203. //
  2204. typedef struct _WW_MBX_PMAN
  2205. {
  2206.     BOOLEAN             ACTION;                 // 0 = Login PMAN,  1 = Logout PMAN
  2207.     ULONG               MAN;
  2208.     UCHAR               PASSWORD[8];            // Password should be null for Logout and indications.
  2209.                                                 // Maximum length of password is 8 chars.
  2210. } WW_MBX_PMAN, *PWW_MBX_PMAN;
  2211. //
  2212. // OID_WW_MBX_FLEXLIST
  2213. //
  2214. typedef struct  _WW_MBX_FLEXLIST
  2215. {
  2216.     INT     count;                              //  Number of MAN entries used.
  2217.                                                 // -1=unknown.
  2218.     ULONG   MAN[7];                             //  List of MANs.
  2219. } WW_MBX_FLEXLIST;
  2220. //
  2221. // OID_WW_MBX_GROUPLIST
  2222. //
  2223. typedef struct  _WW_MBX_GROUPLIST
  2224. {
  2225.     INT  count;                                 //  Number of MAN entries used.
  2226.                                                 // -1=unknown.
  2227.     ULONG   MAN[15];                            //  List of MANs.
  2228. } WW_MBX_GROUPLIST;
  2229. //
  2230. // OID_WW_MBX_TRAFFIC_AREA
  2231. //
  2232. typedef enum    _WW_MBX_TRAFFIC_AREA
  2233. {
  2234.     unknown_traffic_area,                       // The driver has no information about the current traffic area.
  2235.     in_traffic_area,                            // Mobile unit has entered a subscribed traffic area.
  2236.     in_auth_traffic_area,                       // Mobile unit is outside traffic area but is authorized.
  2237.     unauth_traffic_area                         // Mobile unit is outside traffic area but is un-authorized.
  2238. } WW_MBX_TRAFFIC_AREA;
  2239. //
  2240. // OID_WW_MBX_LIVE_DIE
  2241. //
  2242. typedef INT WW_MBX_LIVE_DIE;                    //  0 = DIE last received   
  2243.                                                 //  1 = LIVE last received
  2244.                                                 // -1 = unknown
  2245. //
  2246. // OID_WW_MBX_TEMP_DEFAULTLIST
  2247. //
  2248. typedef struct _WW_MBX_CHANNEL_PAIR
  2249. {
  2250.     ULONG               Mobile_Tx;
  2251.     ULONG               Mobile_Rx;
  2252. } WW_MBX_CHANNEL_PAIR, *PWW_MBX_CHANNEL_PAIR;
  2253. typedef struct _WW_MBX_TEMPDEFAULTLIST
  2254. {
  2255.     ULONG               Length;
  2256.     WW_MBX_CHANNEL_PAIR ChannelPair[1];
  2257. } WW_MBX_TEMPDEFAULTLIST, *WW_PMBX_TEMPDEFAULTLIST;
  2258. #endif // WIRELESS_WAN
  2259. //
  2260. //
  2261. // Base types that were redefined for BPC
  2262. //
  2263. // BPC_FILETIME is used exactly like FILETIME in Win32
  2264. //
  2265. // BPC_HANDLE is opaque to everything except the Miniport
  2266. //              
  2267. typedef struct _BPC_FILETIME
  2268. {
  2269.     ULONG   dwLowDateTime;
  2270.     ULONG   dwHighDateTime;
  2271. } BPC_FILETIME, *PBPC_FILETIME;
  2272. typedef PVOID   BPC_HANDLE;
  2273. //
  2274. // BPC Extension Globals
  2275. //
  2276. //
  2277. #define BPC_MIN_DIMENSION       1
  2278. #define BPC_MAX_BUFFER_SIZE     64
  2279. #define BPC_MIN_BUFFER_SIZE     4
  2280. #define BPC_DEVICE_ANY          ((BPC_HANDLE) 0xFFFFFFFF)
  2281. //
  2282. // Buffer indicate reason codes
  2283. //
  2284. //
  2285. typedef enum _NDIS_BPC_INDICATE_REASON
  2286. {
  2287.     bpcBufferFull = 0,
  2288.     bpcBufferForced,
  2289.     bpcBufferTimeOut,
  2290.     bpcBufferDiscontinuity,
  2291.     bpcBufferOverflow,
  2292.     bpcBufferStatusEvent
  2293. } NDIS_BPC_INDICATE_REASON, *PNDIS_BPC_INDICATE_REASON;
  2294. //
  2295. // BPC Stream Types
  2296. //
  2297. #define BPC_STREAM_TYPE_GENERIC_MIN     0x01000000
  2298. #define BPC_STREAM_TYPE_RAW             0x01000000
  2299. #define BPC_STREAM_TYPE_MPT_128         0x01000001
  2300. #define BPC_STREAM_TYPE_MPT_128_CRC     0x01000002
  2301. #define BPC_STREAM_TYPE_IP              0x01000003
  2302. #define BPC_STREAM_TYPE_PROVIDER_MIN    0x02000000
  2303. #define BPC_STREAM_TYPE_PROVIDER_MAX    0x02ffffff
  2304. #define BPC_STREAM_TYPE_ADAPTER_MIN     0x03000000
  2305. #define BPC_STREAM_TYPE_ADAPTER_MAX     0x03ffffff
  2306. //
  2307. // BPC Adapter Capabilities
  2308. //
  2309. typedef struct _NDIS_BPC_ADAPTER_CAPS
  2310. {
  2311.     ULONG   ulBPCMajorRev;
  2312.     ULONG   ulBPCMinorRev;
  2313.     ULONG   ulcHSDataDevices;
  2314.     ULONG   ulbpsHSDeviceMax;
  2315.     ULONG   ulcLSDataDevices;
  2316.     ULONG   ulbpsLSDeviceMax;
  2317.     ULONG   ulcTuningDevices;
  2318.     ULONG   ulcbLargestStatus;
  2319.     ULONG   ulVendorId;
  2320.     ULONG   ulAdapterId;
  2321.     GUID    guidProvider;
  2322. } NDIS_BPC_ADAPTER_CAPS, *PNDIS_BPC_ADAPTER_CAPS;
  2323. //
  2324. //  BPC Device Enumeration
  2325. //
  2326. typedef struct _NDIS_BPC_DEVICES
  2327. {
  2328.     ULONG       ulcDevices;
  2329.     BPC_HANDLE  rgnhDevices[BPC_MIN_DIMENSION];
  2330. } NDIS_BPC_DEVICES, *PNDIS_BPC_DEVICES;
  2331. #define CbDevices(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICES, rgnhDevices) + (cnt) * sizeof(BPC_HANDLE))
  2332. //
  2333. // BPC Device Capabilities Structure
  2334. //
  2335. typedef struct NDIS_BPC_DEVICE_CAPS
  2336. {
  2337.     BPC_HANDLE  nhDevice;
  2338.     ULONG       ulBPCCaps;
  2339.     ULONG       ulbpsMax;
  2340.     ULONG       ulcStreamTypes;
  2341.     ULONG       rgulStreamTypes[BPC_MIN_DIMENSION];
  2342. } NDIS_BPC_DEVICE_CAPS, *PNDIS_BPC_DEVICE_CAPS;
  2343. #define CbDeviceCaps(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICE_CAPS, rgulStreamTypes) + (cnt) * sizeof(ULONG))
  2344. //
  2345. // BPC Device Capability Definitions
  2346. // (ie Flags that can be set in ulBPCCaps
  2347. //
  2348. #define BPCCapBusMasteredData   0x01
  2349. #define BPCCapIndependentTuner  0x02
  2350. #define BPCCapExternalDataBus   0x04
  2351. #define BPCCapLowSpeedData      0x10
  2352. #define BPCCapHighSpeedData     0x20
  2353. //
  2354. // BPC Device Settings Structure
  2355. //
  2356. typedef struct NDIS_BPC_DEVICE_SETTINGS
  2357. {
  2358.     BPC_HANDLE  nhDevice;
  2359.     ULONG       ulBPCCaps;
  2360.     ULONG       ulcConnections;
  2361.     BOOLEAN     fEnabled;
  2362.     ULONG       ulStreamType;
  2363.     ULONG       ulcbAddressConnection;
  2364.     ULONG       rgulAddressConnection[BPC_MIN_DIMENSION];
  2365. } NDIS_BPC_DEVICE_SETTINGS, *PNDIS_BPC_DEVICE_SETTINGS;
  2366. #define CbDeviceSettings(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICE_SETTINGS, rgulAddressConnection) + (cnt) * sizeof(ULONG))
  2367. //
  2368. // BPC Connection State Definitions
  2369. // (ie Acceptable values for ulState)
  2370. //
  2371. #define BPC_CONNECT_STATE_UNCOMMITTED   0
  2372. #define BPC_CONNECT_STATE_QUEUED        1
  2373. #define BPC_CONNECT_STATE_ACTIVE        2
  2374. #define BPC_CONNECT_STATE_DISCONNECTING 3
  2375. //
  2376. // BPC Connections Status Structure
  2377. //
  2378. typedef struct NDIS_BPC_CONNECTION_STATUS
  2379. {
  2380.     BPC_HANDLE  nhConnection;
  2381.     BPC_HANDLE  nhDevice;
  2382.     ULONG       ulConnectPriority;
  2383.     ULONG       ulDisconnectPriority;
  2384.     ULONG       ulbpsAverage;
  2385.     ULONG       ulbpsBurst;
  2386.     ULONG       ulState;
  2387.     BOOLEAN     fEnabled;
  2388. } NDIS_BPC_CONNECTION_STATUS, *PNDIS_BPC_CONNECTION_STATUS;
  2389. //
  2390. // BPC Address Comparison Structure
  2391. //
  2392. typedef struct NDIS_BPC_ADDRESS_COMPARE
  2393. {
  2394.     BOOLEAN fEqual;
  2395.     ULONG   ulcbFirstOffset;
  2396.     ULONG   ulcbFirstLength;
  2397.     ULONG   ulcbSecondOffset;
  2398.     ULONG   ulcbSecondLength;
  2399. } NDIS_BPC_ADDRESS_COMPARE, *PNDIS_BPC_ADDRESS_COMPARE;
  2400. //
  2401. // BPC Program Guide Types
  2402. //
  2403. // Currently there are no Generic BPC Program Guide types.
  2404. //
  2405. #define BPC_GUIDE_GENERIC_MIN   0x01000000
  2406. #define BPC_GUIDE_GENERIC_MAX   0x01ffffff
  2407. #define BPC_GUIDE_PROVIDER_MIN  0x02000000
  2408. #define BPC_GUIDE_PROVIDER_MAX  0x02ffffff
  2409. #define BPC_GUIDE_ADAPTER_MIN   0x03000000
  2410. #define BPC_GUIDE_ADAPTER_MAX   0x03ffffff
  2411. //
  2412. // BPC Program Guide Structure
  2413. //
  2414. typedef struct NDIS_BPC_PROGRAM_GUIDE
  2415. {
  2416.     ULONG       ulGuideType;
  2417.     BPC_FILETIME ftLastUpdate;
  2418.     ULONG       ulChangeNumber;
  2419.     ULONG       ulcbGuideSize;
  2420.     ULONG       rgulGuideData[BPC_MIN_DIMENSION];
  2421. } NDIS_BPC_PROGRAM_GUIDE, *PNDIS_BPC_PROGRAM_GUIDE;
  2422. //
  2423. // BPC Extension Errors
  2424. // (ie Acceptable values for ulBPCError)
  2425. //
  2426. typedef enum _NDIS_BPC_ERROR
  2427. {
  2428.     bpcErrorUnknownFailure = 0xc0ff0000,
  2429.     bpcErrorHardwareFailure,
  2430.     bpcErrorProviderFailure,
  2431.     bpcErrorNoDataDevice,
  2432.     bpcErrorNoTuningDevice,
  2433.     bpcErrorDeviceNotCapable,
  2434.     bpcErrorConflictingDevice,
  2435.     bpcErrorConflictingCapability,
  2436.     bpcErrorNoBufferMemory,
  2437.     bpcErrorNoResources,
  2438.     bpcErrorAdapterClosing,
  2439.     bpcErrorConnectionClosing,
  2440.     bpcErrorTooComplex,
  2441.     bpcErrorProviderNotSupported,
  2442.     bpcErrorUnknownProviderStructure,
  2443.     bpcErrorAddressNotSupported,
  2444.     bpcErrorInvalidAddress,
  2445.     bpcErrorUnknownAdapterStructure
  2446. } NDIS_BPC_ERROR, *PNDIS_BPC_ERROR;
  2447. //
  2448. //  BPC Last Error Structure
  2449. //
  2450. typedef struct NDIS_BPC_LAST_ERROR
  2451. {
  2452.     ULONG       ulErrorContext;
  2453.     ULONG       ulBPCError;
  2454.     ULONG       ulAdapterError;
  2455.     ULONG       ulAdapterContext;
  2456. } NDIS_BPC_LAST_ERROR, *PNDIS_BPC_LAST_ERROR;
  2457. //
  2458. //  BPC Buffer Pool Request/Report Structure
  2459. //
  2460. typedef struct NDIS_BPC_POOL
  2461. {
  2462.     BPC_HANDLE  nhConnection;
  2463.     ULONG       ulcbPoolSize;
  2464.     ULONG       ulcbMaxBufferSize;
  2465.     ULONG       ulcbBufferReserved;
  2466. } NDIS_BPC_POOL, *PNDIS_BPC_POOL;
  2467. //
  2468. // BPC Provider and Adapter Specific Structures are defined in the
  2469. // BpcXXXX.H file which the Provider/Adapter Manufacturer supplies.
  2470. //
  2471. //
  2472. // BPC Connect Structure
  2473. //
  2474. typedef struct NDIS_BPC_CONNECT
  2475. {
  2476.     BPC_HANDLE  nhConnection;
  2477.     BPC_HANDLE  nhDevice;
  2478.     ULONG       ulConnectPriority;
  2479.     ULONG       ulDisconnectPriority;
  2480.     BOOLEAN     fImmediate;
  2481.     ULONG       ulcbAddress;
  2482.     GUID        guidProvider;
  2483.     ULONG       rgulAddress[BPC_MIN_DIMENSION];
  2484. } NDIS_BPC_CONNECT, *PNDIS_BPC_CONNECT;
  2485. #define CbConnect(cnt)  (FIELD_OFFSET(NDIS_BPC_CONNECT, rgulAddress) + (cnt) * sizeof(ULONG))
  2486. //
  2487. //  BPC Commit Connections Structure
  2488. //
  2489. typedef struct NDIS_BPC_COMMIT
  2490. {
  2491.     ULONG       ulcConnections;
  2492.     BPC_HANDLE  rgnhConnections[BPC_MIN_DIMENSION];
  2493. } NDIS_BPC_COMMIT, *PNDIS_BPC_COMMIT;
  2494. //
  2495. //  BPC Disconnect Structure
  2496. //
  2497. typedef struct NDIS_BPC_DISCONNECT
  2498. {
  2499.     BPC_HANDLE  nhConnection;
  2500. } NDIS_BPC_DISCONNECT, *PNDIS_BPC_DISCONNECT;
  2501. //
  2502. //  BPC Enable Connection Structure
  2503. //
  2504. typedef struct NDIS_BPC_CONNECTION_ENABLE
  2505. {
  2506.     BPC_HANDLE  nhConnection;
  2507.     BOOLEAN     fEnabled;
  2508. } NDIS_BPC_CONNECTION_ENABLE, *PNDIS_BPC_CONNECTION_ENABLE;
  2509. //
  2510. // BPC Pool Return Structure
  2511. //
  2512. typedef struct NDIS_BPC_POOL_RETURN
  2513. {
  2514.     BPC_HANDLE  nhConnection;
  2515. } NDIS_BPC_POOL_RETURN, *PNDIS_BPC_POOL_RETURN;
  2516. typedef struct NDIS_BPC_FORCE_RECEIVE
  2517. {
  2518.     BPC_HANDLE  nhConnection;
  2519.     ULONG       ulReasonCode;
  2520. } NDIS_BPC_FORCE_RECEIVE, *PNDIS_BPC_FORCE_RECEIVE;
  2521. //
  2522. //  BPC Media Specific Information Structure
  2523. //
  2524. typedef struct NDIS_BPC_MEDIA_SPECIFIC_INFORMATION
  2525. {
  2526.     BPC_HANDLE nhConnection;                    // The handle to the data device.
  2527.     ULONG       ulBPCStreamType;                // The stream type of the data in packet
  2528.     ULONG       ulReasonCode;                   // The reason the buffer was indicated
  2529.     PVOID       pvMiniportReserved1;
  2530.     ULONG       ulMiniportReserved2;
  2531. } NDIS_BPC_MEDIA_SPECIFIC_INFORMATION, *PNDIS_BPC_MEDIA_SPECIFIC_INFORMATION;
  2532. //
  2533. // BPC Status Categories
  2534. //
  2535. #define BPC_CATEGORY_BPC            0x01000000
  2536. #define BPC_CATEGORY_PROVIDER       0x02000000
  2537. #define BPC_CATEGORY_ADAPTER        0x03000000
  2538. //
  2539. // BPC Status Types for Category BPC_CATEGORY_BPC
  2540. //
  2541. #define BPC_STATUS_CONNECTED        0x00000001
  2542. #define BPC_STATUS_QUEUED           0x00000002
  2543. #define BPC_STATUS_ACTIVE           0x00000003
  2544. #define BPC_STATUS_DISCONNECTED     0x00000004
  2545. #define BPC_STATUS_OVERFLOW         0x00000005
  2546. #define BPC_STATUS_DATA_STOP        0x00000006
  2547. #define BPC_STATUS_DATA_START       0x00000007
  2548. #define BPC_STATUS_DATA_ERROR       0x00000008
  2549. //
  2550. // BPC Status Indication Structure
  2551. //
  2552. typedef struct NDIS_BPC_STATUS
  2553. {
  2554.     ULONG ulStatusCategory;
  2555.     ULONG ulStatusType;
  2556.     ULONG ulcbStatus;
  2557.     ULONG rgulStatus;
  2558. } NDIS_BPC_STATUS, *PNDIS_BPC_STATUS;
  2559. //
  2560. // BPC Connection Status Structure
  2561. //
  2562. // All BPC Generic Connection Status package this structure
  2563. // in rgulStatus to indicate to which connection and device
  2564. // the status pertains.
  2565. //
  2566. typedef struct NDIS_BPC_STATUS_CONNECTION
  2567. {
  2568.     BPC_HANDLE  nhConnection;
  2569.     BPC_HANDLE nhDevice;
  2570. } NDIS_BPC_STATUS_CONNECTED, *PNDIS_BPC_STATUS_CONNECTED;
  2571. #ifdef __cplusplus
  2572. }
  2573. #endif
  2574. //
  2575. // flags used for OID_GEN_MINIPORT_INFO
  2576. //
  2577. #define NDIS_MINIPORT_BUS_MASTER                        0x00000001
  2578. #define NDIS_MINIPORT_WDM_DRIVER                        0x00000002
  2579. #define NDIS_MINIPORT_SG_LIST                           0x00000004
  2580. #define NDIS_MINIPORT_SUPPORTS_MEDIA_QUERY              0x00000008
  2581. #define NDIS_MINIPORT_INDICATES_PACKETS                 0x00000010
  2582. #define NDIS_MINIPORT_IGNORE_PACKET_QUEUE               0x00000020
  2583. #define NDIS_MINIPORT_IGNORE_REQUEST_QUEUE              0x00000040
  2584. #define NDIS_MINIPORT_IGNORE_TOKEN_RING_ERRORS          0x00000080
  2585. #define NDIS_MINIPORT_INTERMEDIATE_DRIVER               0x00000100
  2586. #define NDIS_MINIPORT_IS_NDIS_5                         0x00000200
  2587. #define NDIS_MINIPORT_IS_CO                             0x00000400
  2588. #define NDIS_MINIPORT_DESERIALIZE                       0x00000800
  2589. #define NDIS_MINIPORT_REQUIRES_MEDIA_POLLING            0x00001000
  2590. #define NDIS_MINIPORT_SUPPORTS_MEDIA_SENSE              0x00002000
  2591. #define NDIS_MINIPORT_NETBOOT_CARD                      0x00004000
  2592. #define NDIS_MINIPORT_PM_SUPPORTED                      0x00008000
  2593. #define NDIS_MINIPORT_SUPPORTS_MAC_ADDRESS_OVERWRITE    0x00010000
  2594. #define NDIS_MINIPORT_USES_SAFE_BUFFER_APIS             0x00020000
  2595. #define NDIS_MINIPORT_HIDDEN                            0x00040000
  2596. #define NDIS_MINIPORT_SWENUM                            0x00080000
  2597. #define NDIS_MINIPORT_SURPRISE_REMOVE_OK                0x00100000
  2598. #define NDIS_MINIPORT_NO_HALT_ON_SUSPEND                0x00200000
  2599. #define NDIS_MINIPORT_HARDWARE_DEVICE                   0x00400000
  2600. #define NDIS_MINIPORT_SUPPORTS_CANCEL_SEND_PACKETS      0x00800000
  2601. #define NDIS_MINIPORT_64BITS_DMA                        0x01000000
  2602. #endif // _NTDDNDIS_