#ifndef _NTDDNDIS_H
#define _NTDDNDIS_H

/* Network driver interface definitions */

#ifdef __cplusplus
extern "C" {
#endif

#if __POCC__ >= 290
#pragma warn(push)
#pragma warn(disable:2198)  /* Nameless field is not standard */
#endif

#define DD_NDIS_DEVICE_NAME "\\Device\\UNKNOWN"

#define _NDIS_CONTROL_CODE(request,method)  CTL_CODE(FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS)

#define IOCTL_NDIS_QUERY_GLOBAL_STATS  _NDIS_CONTROL_CODE(0, METHOD_OUT_DIRECT)
#define IOCTL_NDIS_QUERY_ALL_STATS  _NDIS_CONTROL_CODE(1, METHOD_OUT_DIRECT)
#define IOCTL_NDIS_DO_PNP_OPERATION  _NDIS_CONTROL_CODE(2, METHOD_BUFFERED)
#define IOCTL_NDIS_QUERY_SELECTED_STATS _NDIS_CONTROL_CODE(3, METHOD_OUT_DIRECT)
#define IOCTL_NDIS_ENUMERATE_INTERFACES _NDIS_CONTROL_CODE(4, METHOD_BUFFERED)
#define IOCTL_NDIS_ADD_TDI_DEVICE  _NDIS_CONTROL_CODE(5, METHOD_BUFFERED)
#define IOCTL_NDIS_GET_DEVICE_BUNDLE  _NDIS_CONTROL_CODE(6, METHOD_OUT_DIRECT)
#define IOCTL_NDIS_GET_LOG_DATA  _NDIS_CONTROL_CODE(7, METHOD_OUT_DIRECT)

#ifndef GUID_DEFINED
#include <guiddef.h>
#endif

#define OID_GEN_SUPPORTED_LIST  0x00010101
#define OID_GEN_HARDWARE_STATUS  0x00010102
#define OID_GEN_MEDIA_SUPPORTED  0x00010103
#define OID_GEN_MEDIA_IN_USE  0x00010104
#define OID_GEN_MAXIMUM_LOOKAHEAD  0x00010105
#define OID_GEN_MAXIMUM_FRAME_SIZE  0x00010106
#define OID_GEN_LINK_SPEED  0x00010107
#define OID_GEN_TRANSMIT_BUFFER_SPACE  0x00010108
#define OID_GEN_RECEIVE_BUFFER_SPACE  0x00010109
#define OID_GEN_TRANSMIT_BLOCK_SIZE  0x0001010A
#define OID_GEN_RECEIVE_BLOCK_SIZE  0x0001010B
#define OID_GEN_VENDOR_ID  0x0001010C
#define OID_GEN_VENDOR_DESCRIPTION  0x0001010D
#define OID_GEN_CURRENT_PACKET_FILTER  0x0001010E
#define OID_GEN_CURRENT_LOOKAHEAD  0x0001010F
#define OID_GEN_DRIVER_VERSION  0x00010110
#define OID_GEN_MAXIMUM_TOTAL_SIZE  0x00010111
#define OID_GEN_PROTOCOL_OPTIONS  0x00010112
#define OID_GEN_MAC_OPTIONS  0x00010113
#define OID_GEN_MEDIA_CONNECT_STATUS  0x00010114
#define OID_GEN_MAXIMUM_SEND_PACKETS  0x00010115
#define OID_GEN_VENDOR_DRIVER_VERSION  0x00010116
#define OID_GEN_SUPPORTED_GUIDS  0x00010117
#define OID_GEN_NETWORK_LAYER_ADDRESSES  0x00010118
#define OID_GEN_TRANSPORT_HEADER_OFFSET  0x00010119

#define OID_GEN_MEDIA_CAPABILITIES  0x00010201
#define OID_GEN_PHYSICAL_MEDIUM  0x00010202

#define OID_GEN_XMIT_OK  0x00020101
#define OID_GEN_RCV_OK  0x00020102
#define OID_GEN_XMIT_ERROR  0x00020103
#define OID_GEN_RCV_ERROR  0x00020104
#define OID_GEN_RCV_NO_BUFFER  0x00020105

#define OID_GEN_DIRECTED_BYTES_XMIT  0x00020201
#define OID_GEN_DIRECTED_FRAMES_XMIT  0x00020202
#define OID_GEN_MULTICAST_BYTES_XMIT  0x00020203
#define OID_GEN_MULTICAST_FRAMES_XMIT  0x00020204
#define OID_GEN_BROADCAST_BYTES_XMIT  0x00020205
#define OID_GEN_BROADCAST_FRAMES_XMIT  0x00020206
#define OID_GEN_DIRECTED_BYTES_RCV  0x00020207
#define OID_GEN_DIRECTED_FRAMES_RCV  0x00020208
#define OID_GEN_MULTICAST_BYTES_RCV  0x00020209
#define OID_GEN_MULTICAST_FRAMES_RCV  0x0002020A
#define OID_GEN_BROADCAST_BYTES_RCV  0x0002020B
#define OID_GEN_BROADCAST_FRAMES_RCV  0x0002020C

#define OID_GEN_RCV_CRC_ERROR  0x0002020D
#define OID_GEN_TRANSMIT_QUEUE_LENGTH  0x0002020E

#define OID_GEN_GET_TIME_CAPS  0x0002020F
#define OID_GEN_GET_NETCARD_TIME  0x00020210
#define OID_GEN_NETCARD_LOAD  0x00020211
#define OID_GEN_DEVICE_PROFILE  0x00020212

#define OID_GEN_INIT_TIME_MS  0x00020213
#define OID_GEN_RESET_COUNTS  0x00020214
#define OID_GEN_MEDIA_SENSE_COUNTS  0x00020215
#define OID_GEN_FRIENDLY_NAME  0x00020216

#define OID_GEN_CO_SUPPORTED_LIST  OID_GEN_SUPPORTED_LIST
#define OID_GEN_CO_HARDWARE_STATUS  OID_GEN_HARDWARE_STATUS
#define OID_GEN_CO_MEDIA_SUPPORTED  OID_GEN_MEDIA_SUPPORTED
#define OID_GEN_CO_MEDIA_IN_USE  OID_GEN_MEDIA_IN_USE
#define OID_GEN_CO_LINK_SPEED  OID_GEN_LINK_SPEED
#define OID_GEN_CO_VENDOR_ID  OID_GEN_VENDOR_ID
#define OID_GEN_CO_VENDOR_DESCRIPTION  OID_GEN_VENDOR_DESCRIPTION
#define OID_GEN_CO_DRIVER_VERSION  OID_GEN_DRIVER_VERSION
#define OID_GEN_CO_PROTOCOL_OPTIONS  OID_GEN_PROTOCOL_OPTIONS
#define OID_GEN_CO_MAC_OPTIONS  OID_GEN_MAC_OPTIONS
#define OID_GEN_CO_MEDIA_CONNECT_STATUS  OID_GEN_MEDIA_CONNECT_STATUS
#define OID_GEN_CO_VENDOR_DRIVER_VERSION  OID_GEN_VENDOR_DRIVER_VERSION
#define OID_GEN_CO_SUPPORTED_GUIDS  OID_GEN_SUPPORTED_GUIDS
#define OID_GEN_CO_GET_TIME_CAPS  OID_GEN_GET_TIME_CAPS
#define OID_GEN_CO_GET_NETCARD_TIME  OID_GEN_GET_NETCARD_TIME
#define OID_GEN_CO_MINIMUM_LINK_SPEED  0x00020120

#define OID_GEN_CO_XMIT_PDUS_OK  OID_GEN_XMIT_OK
#define OID_GEN_CO_RCV_PDUS_OK  OID_GEN_RCV_OK
#define OID_GEN_CO_XMIT_PDUS_ERROR  OID_GEN_XMIT_ERROR
#define OID_GEN_CO_RCV_PDUS_ERROR  OID_GEN_RCV_ERROR
#define OID_GEN_CO_RCV_PDUS_NO_BUFFER  OID_GEN_RCV_NO_BUFFER

#define OID_GEN_CO_RCV_CRC_ERROR  OID_GEN_RCV_CRC_ERROR
#define OID_GEN_CO_TRANSMIT_QUEUE_LENGTH  OID_GEN_TRANSMIT_QUEUE_LENGTH
#define OID_GEN_CO_BYTES_XMIT  OID_GEN_DIRECTED_BYTES_XMIT
#define OID_GEN_CO_BYTES_RCV  OID_GEN_DIRECTED_BYTES_RCV
#define OID_GEN_CO_NETCARD_LOAD  OID_GEN_NETCARD_LOAD
#define OID_GEN_CO_DEVICE_PROFILE  OID_GEN_DEVICE_PROFILE
#define OID_GEN_CO_BYTES_XMIT_OUTSTANDING  0x00020221

#define OID_802_3_PERMANENT_ADDRESS  0x01010101
#define OID_802_3_CURRENT_ADDRESS  0x01010102
#define OID_802_3_MULTICAST_LIST  0x01010103
#define OID_802_3_MAXIMUM_LIST_SIZE  0x01010104
#define OID_802_3_MAC_OPTIONS  0x01010105

#define NDIS_802_3_MAC_OPTION_PRIORITY  0x00000001

#define OID_802_3_RCV_ERROR_ALIGNMENT  0x01020101
#define OID_802_3_XMIT_ONE_COLLISION  0x01020102
#define OID_802_3_XMIT_MORE_COLLISIONS  0x01020103

#define OID_802_3_XMIT_DEFERRED  0x01020201
#define OID_802_3_XMIT_MAX_COLLISIONS  0x01020202
#define OID_802_3_RCV_OVERRUN  0x01020203
#define OID_802_3_XMIT_UNDERRUN  0x01020204
#define OID_802_3_XMIT_HEARTBEAT_FAILURE  0x01020205
#define OID_802_3_XMIT_TIMES_CRS_LOST  0x01020206
#define OID_802_3_XMIT_LATE_COLLISIONS  0x01020207

#define OID_802_5_PERMANENT_ADDRESS  0x02010101
#define OID_802_5_CURRENT_ADDRESS  0x02010102
#define OID_802_5_CURRENT_FUNCTIONAL  0x02010103
#define OID_802_5_CURRENT_GROUP  0x02010104
#define OID_802_5_LAST_OPEN_STATUS  0x02010105
#define OID_802_5_CURRENT_RING_STATUS  0x02010106
#define OID_802_5_CURRENT_RING_STATE  0x02010107

#define OID_802_5_LINE_ERRORS  0x02020101
#define OID_802_5_LOST_FRAMES  0x02020102

#define OID_802_5_BURST_ERRORS  0x02020201
#define OID_802_5_AC_ERRORS  0x02020202
#define OID_802_5_ABORT_DELIMETERS  0x02020203
#define OID_802_5_FRAME_COPIED_ERRORS  0x02020204
#define OID_802_5_FREQUENCY_ERRORS  0x02020205
#define OID_802_5_TOKEN_ERRORS  0x02020206
#define OID_802_5_INTERNAL_ERRORS  0x02020207

#define OID_FDDI_LONG_PERMANENT_ADDR  0x03010101
#define OID_FDDI_LONG_CURRENT_ADDR  0x03010102
#define OID_FDDI_LONG_MULTICAST_LIST  0x03010103
#define OID_FDDI_LONG_MAX_LIST_SIZE  0x03010104
#define OID_FDDI_SHORT_PERMANENT_ADDR  0x03010105
#define OID_FDDI_SHORT_CURRENT_ADDR  0x03010106
#define OID_FDDI_SHORT_MULTICAST_LIST  0x03010107
#define OID_FDDI_SHORT_MAX_LIST_SIZE  0x03010108

#define OID_FDDI_ATTACHMENT_TYPE  0x03020101
#define OID_FDDI_UPSTREAM_NODE_LONG  0x03020102
#define OID_FDDI_DOWNSTREAM_NODE_LONG  0x03020103
#define OID_FDDI_FRAME_ERRORS  0x03020104
#define OID_FDDI_FRAMES_LOST  0x03020105
#define OID_FDDI_RING_MGT_STATE  0x03020106
#define OID_FDDI_LCT_FAILURES  0x03020107
#define OID_FDDI_LEM_REJECTS  0x03020108
#define OID_FDDI_LCONNECTION_STATE  0x03020109

#define OID_FDDI_SMT_STATION_ID  0x03030201
#define OID_FDDI_SMT_OP_VERSION_ID  0x03030202
#define OID_FDDI_SMT_HI_VERSION_ID  0x03030203
#define OID_FDDI_SMT_LO_VERSION_ID  0x03030204
#define OID_FDDI_SMT_MANUFACTURER_DATA  0x03030205
#define OID_FDDI_SMT_USER_DATA  0x03030206
#define OID_FDDI_SMT_MIB_VERSION_ID  0x03030207
#define OID_FDDI_SMT_MAC_CT  0x03030208
#define OID_FDDI_SMT_NON_MASTER_CT  0x03030209
#define OID_FDDI_SMT_MASTER_CT  0x0303020A
#define OID_FDDI_SMT_AVAILABLE_PATHS  0x0303020B
#define OID_FDDI_SMT_CONFIG_CAPABILITIES  0x0303020C
#define OID_FDDI_SMT_CONFIG_POLICY  0x0303020D
#define OID_FDDI_SMT_CONNECTION_POLICY  0x0303020E
#define OID_FDDI_SMT_T_NOTIFY  0x0303020F
#define OID_FDDI_SMT_STAT_RPT_POLICY  0x03030210
#define OID_FDDI_SMT_TRACE_MAX_EXPIRATION  0x03030211
#define OID_FDDI_SMT_PORT_INDEXES  0x03030212
#define OID_FDDI_SMT_MAC_INDEXES  0x03030213
#define OID_FDDI_SMT_BYPASS_PRESENT  0x03030214
#define OID_FDDI_SMT_ECM_STATE  0x03030215
#define OID_FDDI_SMT_CF_STATE  0x03030216
#define OID_FDDI_SMT_HOLD_STATE  0x03030217
#define OID_FDDI_SMT_REMOTE_DISCONNECT_FLAG  0x03030218
#define OID_FDDI_SMT_STATION_STATUS  0x03030219
#define OID_FDDI_SMT_PEER_WRAP_FLAG  0x0303021A
#define OID_FDDI_SMT_MSG_TIME_STAMP  0x0303021B
#define OID_FDDI_SMT_TRANSITION_TIME_STAMP  0x0303021C
#define OID_FDDI_SMT_SET_COUNT  0x0303021D
#define OID_FDDI_SMT_LAST_SET_STATION_ID  0x0303021E
#define OID_FDDI_MAC_FRAME_STATUS_FUNCTIONS  0x0303021F
#define OID_FDDI_MAC_BRIDGE_FUNCTIONS  0x03030220
#define OID_FDDI_MAC_T_MAX_CAPABILITY  0x03030221
#define OID_FDDI_MAC_TVX_CAPABILITY  0x03030222
#define OID_FDDI_MAC_AVAILABLE_PATHS  0x03030223
#define OID_FDDI_MAC_CURRENT_PATH  0x03030224
#define OID_FDDI_MAC_UPSTREAM_NBR  0x03030225
#define OID_FDDI_MAC_DOWNSTREAM_NBR  0x03030226
#define OID_FDDI_MAC_OLD_UPSTREAM_NBR  0x03030227
#define OID_FDDI_MAC_OLD_DOWNSTREAM_NBR  0x03030228
#define OID_FDDI_MAC_DUP_ADDRESS_TEST  0x03030229
#define OID_FDDI_MAC_REQUESTED_PATHS  0x0303022A
#define OID_FDDI_MAC_DOWNSTREAM_PORT_TYPE  0x0303022B
#define OID_FDDI_MAC_INDEX  0x0303022C
#define OID_FDDI_MAC_SMT_ADDRESS  0x0303022D
#define OID_FDDI_MAC_LONG_GRP_ADDRESS  0x0303022E
#define OID_FDDI_MAC_SHORT_GRP_ADDRESS  0x0303022F
#define OID_FDDI_MAC_T_REQ  0x03030230
#define OID_FDDI_MAC_T_NEG  0x03030231
#define OID_FDDI_MAC_T_MAX  0x03030232
#define OID_FDDI_MAC_TVX_VALUE  0x03030233
#define OID_FDDI_MAC_T_PRI0  0x03030234
#define OID_FDDI_MAC_T_PRI1  0x03030235
#define OID_FDDI_MAC_T_PRI2  0x03030236
#define OID_FDDI_MAC_T_PRI3  0x03030237
#define OID_FDDI_MAC_T_PRI4  0x03030238
#define OID_FDDI_MAC_T_PRI5  0x03030239
#define OID_FDDI_MAC_T_PRI6  0x0303023A
#define OID_FDDI_MAC_FRAME_CT  0x0303023B
#define OID_FDDI_MAC_COPIED_CT  0x0303023C
#define OID_FDDI_MAC_TRANSMIT_CT  0x0303023D
#define OID_FDDI_MAC_TOKEN_CT  0x0303023E
#define OID_FDDI_MAC_ERROR_CT  0x0303023F
#define OID_FDDI_MAC_LOST_CT  0x03030240
#define OID_FDDI_MAC_TVX_EXPIRED_CT  0x03030241
#define OID_FDDI_MAC_NOT_COPIED_CT  0x03030242
#define OID_FDDI_MAC_LATE_CT  0x03030243
#define OID_FDDI_MAC_RING_OP_CT  0x03030244
#define OID_FDDI_MAC_FRAME_ERROR_THRESHOLD  0x03030245
#define OID_FDDI_MAC_FRAME_ERROR_RATIO  0x03030246
#define OID_FDDI_MAC_NOT_COPIED_THRESHOLD  0x03030247
#define OID_FDDI_MAC_NOT_COPIED_RATIO  0x03030248
#define OID_FDDI_MAC_RMT_STATE  0x03030249
#define OID_FDDI_MAC_DA_FLAG  0x0303024A
#define OID_FDDI_MAC_UNDA_FLAG  0x0303024B
#define OID_FDDI_MAC_FRAME_ERROR_FLAG  0x0303024C
#define OID_FDDI_MAC_NOT_COPIED_FLAG  0x0303024D
#define OID_FDDI_MAC_MA_UNITDATA_AVAILABLE  0x0303024E
#define OID_FDDI_MAC_HARDWARE_PRESENT  0x0303024F
#define OID_FDDI_MAC_MA_UNITDATA_ENABLE  0x03030250
#define OID_FDDI_PATH_INDEX  0x03030251
#define OID_FDDI_PATH_RING_LATENCY  0x03030252
#define OID_FDDI_PATH_TRACE_STATUS  0x03030253
#define OID_FDDI_PATH_SBA_PAYLOAD  0x03030254
#define OID_FDDI_PATH_SBA_OVERHEAD  0x03030255
#define OID_FDDI_PATH_CONFIGURATION  0x03030256
#define OID_FDDI_PATH_T_R_MODE  0x03030257
#define OID_FDDI_PATH_SBA_AVAILABLE  0x03030258
#define OID_FDDI_PATH_TVX_LOWER_BOUND  0x03030259
#define OID_FDDI_PATH_T_MAX_LOWER_BOUND  0x0303025A
#define OID_FDDI_PATH_MAX_T_REQ  0x0303025B
#define OID_FDDI_PORT_MY_TYPE  0x0303025C
#define OID_FDDI_PORT_NEIGHBOR_TYPE  0x0303025D
#define OID_FDDI_PORT_CONNECTION_POLICIES  0x0303025E
#define OID_FDDI_PORT_MAC_INDICATED  0x0303025F
#define OID_FDDI_PORT_CURRENT_PATH  0x03030260
#define OID_FDDI_PORT_REQUESTED_PATHS  0x03030261
#define OID_FDDI_PORT_MAC_PLACEMENT  0x03030262
#define OID_FDDI_PORT_AVAILABLE_PATHS  0x03030263
#define OID_FDDI_PORT_MAC_LOOP_TIME  0x03030264
#define OID_FDDI_PORT_PMD_CLASS  0x03030265
#define OID_FDDI_PORT_CONNECTION_CAPABILITIES  0x03030266
#define OID_FDDI_PORT_INDEX  0x03030267
#define OID_FDDI_PORT_MAINT_LS  0x03030268
#define OID_FDDI_PORT_BS_FLAG  0x03030269
#define OID_FDDI_PORT_PC_LS  0x0303026A
#define OID_FDDI_PORT_EB_ERROR_CT  0x0303026B
#define OID_FDDI_PORT_LCT_FAIL_CT  0x0303026C
#define OID_FDDI_PORT_LER_ESTIMATE  0x0303026D
#define OID_FDDI_PORT_LEM_REJECT_CT  0x0303026E
#define OID_FDDI_PORT_LEM_CT  0x0303026F
#define OID_FDDI_PORT_LER_CUTOFF  0x03030270
#define OID_FDDI_PORT_LER_ALARM  0x03030271
#define OID_FDDI_PORT_CONNNECT_STATE  0x03030272
#define OID_FDDI_PORT_PCM_STATE  0x03030273
#define OID_FDDI_PORT_PC_WITHHOLD  0x03030274
#define OID_FDDI_PORT_LER_FLAG  0x03030275
#define OID_FDDI_PORT_HARDWARE_PRESENT  0x03030276
#define OID_FDDI_SMT_STATION_ACTION  0x03030277
#define OID_FDDI_PORT_ACTION  0x03030278
#define OID_FDDI_IF_DESCR  0x03030279
#define OID_FDDI_IF_TYPE  0x0303027A
#define OID_FDDI_IF_MTU  0x0303027B
#define OID_FDDI_IF_SPEED  0x0303027C
#define OID_FDDI_IF_PHYS_ADDRESS  0x0303027D
#define OID_FDDI_IF_ADMIN_STATUS  0x0303027E
#define OID_FDDI_IF_OPER_STATUS  0x0303027F
#define OID_FDDI_IF_LAST_CHANGE  0x03030280
#define OID_FDDI_IF_IN_OCTETS  0x03030281
#define OID_FDDI_IF_IN_UCAST_PKTS  0x03030282
#define OID_FDDI_IF_IN_NUCAST_PKTS  0x03030283
#define OID_FDDI_IF_IN_DISCARDS  0x03030284
#define OID_FDDI_IF_IN_ERRORS  0x03030285
#define OID_FDDI_IF_IN_UNKNOWN_PROTOS  0x03030286
#define OID_FDDI_IF_OUT_OCTETS  0x03030287
#define OID_FDDI_IF_OUT_UCAST_PKTS  0x03030288
#define OID_FDDI_IF_OUT_NUCAST_PKTS  0x03030289
#define OID_FDDI_IF_OUT_DISCARDS  0x0303028A
#define OID_FDDI_IF_OUT_ERRORS  0x0303028B
#define OID_FDDI_IF_OUT_QLEN  0x0303028C
#define OID_FDDI_IF_SPECIFIC  0x0303028D

#define OID_WAN_PERMANENT_ADDRESS  0x04010101
#define OID_WAN_CURRENT_ADDRESS  0x04010102
#define OID_WAN_QUALITY_OF_SERVICE  0x04010103
#define OID_WAN_PROTOCOL_TYPE  0x04010104
#define OID_WAN_MEDIUM_SUBTYPE  0x04010105
#define OID_WAN_HEADER_FORMAT  0x04010106

#define OID_WAN_GET_INFO  0x04010107
#define OID_WAN_SET_LINK_INFO  0x04010108
#define OID_WAN_GET_LINK_INFO  0x04010109

#define OID_WAN_LINE_COUNT  0x0401010A
#define OID_WAN_PROTOCOL_CAPS  0x0401010B

#define OID_WAN_GET_BRIDGE_INFO  0x0401020A
#define OID_WAN_SET_BRIDGE_INFO  0x0401020B
#define OID_WAN_GET_COMP_INFO  0x0401020C
#define OID_WAN_SET_COMP_INFO  0x0401020D
#define OID_WAN_GET_STATS_INFO  0x0401020E

#define OID_WAN_CO_GET_INFO  0x04010180
#define OID_WAN_CO_SET_LINK_INFO  0x04010181
#define OID_WAN_CO_GET_LINK_INFO  0x04010182
#define OID_WAN_CO_GET_COMP_INFO  0x04010280
#define OID_WAN_CO_SET_COMP_INFO  0x04010281
#define OID_WAN_CO_GET_STATS_INFO  0x04010282

#define OID_LTALK_CURRENT_NODE_ID  0x05010102

#define OID_LTALK_IN_BROADCASTS  0x05020101
#define OID_LTALK_IN_LENGTH_ERRORS  0x05020102

#define OID_LTALK_OUT_NO_HANDLERS  0x05020201
#define OID_LTALK_COLLISIONS  0x05020202
#define OID_LTALK_DEFERS  0x05020203
#define OID_LTALK_NO_DATA_ERRORS  0x05020204
#define OID_LTALK_RANDOM_CTS_ERRORS  0x05020205
#define OID_LTALK_FCS_ERRORS  0x05020206

#define OID_ARCNET_PERMANENT_ADDRESS  0x06010101
#define OID_ARCNET_CURRENT_ADDRESS  0x06010102

#define OID_ARCNET_RECONFIGURATIONS  0x06020201

#define OID_TAPI_ACCEPT  0x07030101
#define OID_TAPI_ANSWER  0x07030102
#define OID_TAPI_CLOSE  0x07030103
#define OID_TAPI_CLOSE_CALL  0x07030104
#define OID_TAPI_CONDITIONAL_MEDIA_DETECTION  0x07030105
#define OID_TAPI_CONFIG_DIALOG  0x07030106
#define OID_TAPI_DEV_SPECIFIC  0x07030107
#define OID_TAPI_DIAL  0x07030108
#define OID_TAPI_DROP  0x07030109
#define OID_TAPI_GET_ADDRESS_CAPS  0x0703010A
#define OID_TAPI_GET_ADDRESS_ID  0x0703010B
#define OID_TAPI_GET_ADDRESS_STATUS  0x0703010C
#define OID_TAPI_GET_CALL_ADDRESS_ID  0x0703010D
#define OID_TAPI_GET_CALL_INFO  0x0703010E
#define OID_TAPI_GET_CALL_STATUS  0x0703010F
#define OID_TAPI_GET_DEV_CAPS  0x07030110
#define OID_TAPI_GET_DEV_CONFIG  0x07030111
#define OID_TAPI_GET_EXTENSION_ID  0x07030112
#define OID_TAPI_GET_ID  0x07030113
#define OID_TAPI_GET_LINE_DEV_STATUS  0x07030114
#define OID_TAPI_MAKE_CALL  0x07030115
#define OID_TAPI_NEGOTIATE_EXT_VERSION  0x07030116
#define OID_TAPI_OPEN  0x07030117
#define OID_TAPI_PROVIDER_INITIALIZE  0x07030118
#define OID_TAPI_PROVIDER_SHUTDOWN  0x07030119
#define OID_TAPI_SECURE_CALL  0x0703011A
#define OID_TAPI_SELECT_EXT_VERSION  0x0703011B
#define OID_TAPI_SEND_USER_USER_INFO  0x0703011C
#define OID_TAPI_SET_APP_SPECIFIC  0x0703011D
#define OID_TAPI_SET_CALL_PARAMS  0x0703011E
#define OID_TAPI_SET_DEFAULT_MEDIA_DETECTION  0x0703011F
#define OID_TAPI_SET_DEV_CONFIG  0x07030120
#define OID_TAPI_SET_MEDIA_MODE  0x07030121
#define OID_TAPI_SET_STATUS_MESSAGES  0x07030122
#define OID_TAPI_GATHER_DIGITS  0x07030123
#define OID_TAPI_MONITOR_DIGITS  0x07030124

#define OID_ATM_SUPPORTED_VC_RATES  0x08010101
#define OID_ATM_SUPPORTED_SERVICE_CATEGORY  0x08010102
#define OID_ATM_SUPPORTED_AAL_TYPES  0x08010103
#define OID_ATM_HW_CURRENT_ADDRESS  0x08010104
#define OID_ATM_MAX_ACTIVE_VCS  0x08010105
#define OID_ATM_MAX_ACTIVE_VCI_BITS  0x08010106
#define OID_ATM_MAX_ACTIVE_VPI_BITS  0x08010107
#define OID_ATM_MAX_AAL0_PACKET_SIZE  0x08010108
#define OID_ATM_MAX_AAL1_PACKET_SIZE  0x08010109
#define OID_ATM_MAX_AAL34_PACKET_SIZE  0x0801010A
#define OID_ATM_MAX_AAL5_PACKET_SIZE  0x0801010B

#define OID_ATM_SIGNALING_VPIVCI  0x08010201
#define OID_ATM_ASSIGNED_VPI  0x08010202
#define OID_ATM_ACQUIRE_ACCESS_NET_RESOURCES  0x08010203
#define OID_ATM_RELEASE_ACCESS_NET_RESOURCES  0x08010204
#define OID_ATM_ILMI_VPIVCI  0x08010205
#define OID_ATM_DIGITAL_BROADCAST_VPIVCI  0x08010206
#define OID_ATM_GET_NEAREST_FLOW  0x08010207
#define OID_ATM_ALIGNMENT_REQUIRED  0x08010208
#define OID_ATM_LECS_ADDRESS  0x08010209
#define OID_ATM_SERVICE_ADDRESS  0x0801020A

#define OID_ATM_CALL_PROCEEDING  0x0801020B
#define OID_ATM_CALL_ALERTING  0x0801020C
#define OID_ATM_PARTY_ALERTING  0x0801020D
#define OID_ATM_CALL_NOTIFY  0x0801020E

#define OID_ATM_MY_IP_NM_ADDRESS  0x0801020F

#define OID_ATM_RCV_CELLS_OK  0x08020101
#define OID_ATM_XMIT_CELLS_OK  0x08020102
#define OID_ATM_RCV_CELLS_DROPPED  0x08020103

#define OID_ATM_RCV_INVALID_VPI_VCI  0x08020201
#define OID_ATM_CELLS_HEC_ERROR  0x08020202
#define OID_ATM_RCV_REASSEMBLY_ERROR  0x08020203

#define OID_WW_GEN_NETWORK_TYPES_SUPPORTED  0x09010101
#define OID_WW_GEN_NETWORK_TYPE_IN_USE  0x09010102
#define OID_WW_GEN_HEADER_FORMATS_SUPPORTED  0x09010103
#define OID_WW_GEN_HEADER_FORMAT_IN_USE  0x09010104
#define OID_WW_GEN_INDICATION_REQUEST  0x09010105
#define OID_WW_GEN_DEVICE_INFO  0x09010106
#define OID_WW_GEN_OPERATION_MODE  0x09010107
#define OID_WW_GEN_LOCK_STATUS  0x09010108
#define OID_WW_GEN_DISABLE_TRANSMITTER  0x09010109
#define OID_WW_GEN_NETWORK_ID  0x0901010A
#define OID_WW_GEN_PERMANENT_ADDRESS  0x0901010B
#define OID_WW_GEN_CURRENT_ADDRESS  0x0901010C
#define OID_WW_GEN_SUSPEND_DRIVER  0x0901010D
#define OID_WW_GEN_BASESTATION_ID  0x0901010E
#define OID_WW_GEN_CHANNEL_ID  0x0901010F
#define OID_WW_GEN_ENCRYPTION_SUPPORTED  0x09010110
#define OID_WW_GEN_ENCRYPTION_IN_USE  0x09010111
#define OID_WW_GEN_ENCRYPTION_STATE  0x09010112
#define OID_WW_GEN_CHANNEL_QUALITY  0x09010113
#define OID_WW_GEN_REGISTRATION_STATUS  0x09010114
#define OID_WW_GEN_RADIO_LINK_SPEED  0x09010115
#define OID_WW_GEN_LATENCY  0x09010116
#define OID_WW_GEN_BATTERY_LEVEL  0x09010117
#define OID_WW_GEN_EXTERNAL_POWER  0x09010118

#define OID_WW_GEN_PING_ADDRESS  0x09010201
#define OID_WW_GEN_RSSI  0x09010202
#define OID_WW_GEN_SIM_STATUS  0x09010203
#define OID_WW_GEN_ENABLE_SIM_PIN  0x09010204
#define OID_WW_GEN_CHANGE_SIM_PIN  0x09010205
#define OID_WW_GEN_SIM_PUK  0x09010206
#define OID_WW_GEN_SIM_EXCEPTION  0x09010207

#define OID_WW_MBX_SUBADDR  0x09050101
#define OID_WW_MBX_FLEXLIST  0x09050103
#define OID_WW_MBX_GROUPLIST  0x09050104
#define OID_WW_MBX_TRAFFIC_AREA  0x09050105
#define OID_WW_MBX_LIVE_DIE  0x09050106
#define OID_WW_MBX_TEMP_DEFAULTLIST  0x09050107

#define OID_WW_PIN_LOC_AUTHORIZE  0x09090101
#define OID_WW_PIN_LAST_LOCATION  0x09090102
#define OID_WW_PIN_LOC_FIX  0x09090103

#define OID_WW_CDPD_SPNI  0x090D0101
#define OID_WW_CDPD_WASI  0x090D0102
#define OID_WW_CDPD_AREA_COLOR  0x090D0103
#define OID_WW_CDPD_TX_POWER_LEVEL  0x090D0104
#define OID_WW_CDPD_EID  0x090D0105
#define OID_WW_CDPD_HEADER_COMPRESSION  0x090D0106
#define OID_WW_CDPD_DATA_COMPRESSION  0x090D0107
#define OID_WW_CDPD_CHANNEL_SELECT  0x090D0108
#define OID_WW_CDPD_CHANNEL_STATE  0x090D0109
#define OID_WW_CDPD_NEI  0x090D010A
#define OID_WW_CDPD_NEI_STATE  0x090D010B
#define OID_WW_CDPD_SERVICE_PROVIDER_IDENTIFIER 0x090D010C
#define OID_WW_CDPD_SLEEP_MODE  0x090D010D

#define OID_WW_CDPD_CIRCUIT_SWITCHED  0x090D010E

#define OID_WW_CDPD_TEI  0x090D010F
#define OID_WW_CDPD_RSSI  0x090D0110

#define OID_WW_CDPD_CS_SERVICE_PREFERENCE  0x090D0111
#define OID_WW_CDPD_CS_SERVICE_STATUS  0x090D0112
#define OID_WW_CDPD_CS_INFO  0x090D0113
#define OID_WW_CDPD_CS_SUSPEND  0x090D0114
#define OID_WW_CDPD_CS_DEFAULT_DIAL_CODE  0x090D0115
#define OID_WW_CDPD_CS_CALLBACK  0x090D0116
#define OID_WW_CDPD_CS_SID_LIST  0x090D0117
#define OID_WW_CDPD_CS_CONFIGURATION  0x090D0118

#define OID_WW_ARD_SNDCP  0x09110101
#define OID_WW_ARD_TMLY_MSG  0x09110102
#define OID_WW_ARD_DATAGRAM  0x09110103

#define OID_WW_TAC_COMPRESSION  0x09150101

#define OID_WW_TAC_SET_CONFIG  0x09150102
#define OID_WW_TAC_GET_STATUS  0x09150103
#define OID_WW_TAC_USER_HEADER  0x09150104

#define OID_WW_TAC_UNIQUE_SDU_TAG  0x09150105
#define OID_WW_TAC_SEND_COMMAND  0x09150106
#define OID_WW_TAC_GET_RESPONSE  0x09150107
#define OID_WW_TAC_DISABLE_RECEIVER  0x09150108
#define OID_WW_TAC_ANTENNA_MODE  0x09150109
#define OID_WW_TAC_FLUSH_DATA  0x0915010A
#define OID_WW_TAC_SHUTDOWN_DEVICE  0x0915010B
#define OID_WW_TAC_DEVICE_EXCEPTION  0x0915010C
#define OID_WW_TAC_RECEIVE_EXCEPTION  0x0915010D
#define OID_WW_TAC_BUFFER_EXCEPTION  0x0915010E
#define OID_WW_TAC_BATTERY_EXCEPTION  0x0915010F
#define OID_WW_TAC_TRANSMITTER_KEYED  0x09150110
#define OID_WW_TAC_SYSTEM_TABLE  0x09150111
#define OID_WW_TAC_CHANNEL_TABLE  0x09150112
#define OID_WW_TAC_DCHANNEL_TABLE  0x09150113
#define OID_WW_TAC_RECEIVE_QUEUE_COUNT  0x09150114

#define OID_WW_TAC_STATISTICS  0x09160101

#define OID_WW_MET_FUNCTION  0x09190101

#define OID_IRDA_RECEIVING  0x0A010100
#define OID_IRDA_TURNAROUND_TIME  0x0A010101
#define OID_IRDA_SUPPORTED_SPEEDS  0x0A010102
#define OID_IRDA_LINK_SPEED  0x0A010103
#define OID_IRDA_MEDIA_BUSY  0x0A010104

#define OID_IRDA_EXTRA_RCV_BOFS  0x0A010200
#define OID_IRDA_RATE_SNIFF  0x0A010201
#define OID_IRDA_UNICAST_LIST  0x0A010202
#define OID_IRDA_MAX_UNICAST_LIST_SIZE  0x0A010203
#define OID_IRDA_MAX_RECEIVE_WINDOW_SIZE  0x0A010204
#define OID_IRDA_MAX_SEND_WINDOW_SIZE  0x0A010205
#define OID_IRDA_RESERVED1  0x0A01020A
#define OID_IRDA_RESERVED2  0x0A01020F

#define OID_BPC_ADAPTER_CAPS  0x0B010100
#define OID_BPC_DEVICES  0x0B010101
#define OID_BPC_DEVICE_CAPS  0x0B010102
#define OID_BPC_DEVICE_SETTINGS  0x0B010103
#define OID_BPC_CONNECTION_STATUS  0x0B010104
#define OID_BPC_ADDRESS_COMPARE  0x0B010105
#define OID_BPC_PROGRAM_GUIDE  0x0B010106
#define OID_BPC_LAST_ERROR  0x0B020107
#define OID_BPC_POOL  0x0B010108

#define OID_BPC_PROVIDER_SPECIFIC  0x0B020109
#define OID_BPC_ADAPTER_SPECIFIC  0x0B02010A

#define OID_BPC_CONNECT  0x0B01010B
#define OID_BPC_COMMIT  0x0B01010C
#define OID_BPC_DISCONNECT  0x0B01010D
#define OID_BPC_CONNECTION_ENABLE  0x0B01010E
#define OID_BPC_POOL_RESERVE  0x0B01010F
#define OID_BPC_POOL_RETURN  0x0B010110
#define OID_BPC_FORCE_RECEIVE  0x0B010111

#define OID_BPC_LAST  0x0B020112

#define OID_1394_LOCAL_NODE_INFO  0x0C010101
#define OID_1394_VC_INFO  0x0C010102

#define OID_CO_ADD_PVC  0xFE000001
#define OID_CO_DELETE_PVC  0xFE000002
#define OID_CO_GET_CALL_INFORMATION  0xFE000003
#define OID_CO_ADD_ADDRESS  0xFE000004
#define OID_CO_DELETE_ADDRESS  0xFE000005
#define OID_CO_GET_ADDRESSES  0xFE000006
#define OID_CO_ADDRESS_CHANGE  0xFE000007
#define OID_CO_SIGNALING_ENABLED  0xFE000008
#define OID_CO_SIGNALING_DISABLED  0xFE000009
#define OID_CO_AF_CLOSE  0xFE00000A

#define OID_CO_TAPI_CM_CAPS  0xFE001001
#define OID_CO_TAPI_LINE_CAPS  0xFE001002
#define OID_CO_TAPI_ADDRESS_CAPS  0xFE001003
#define OID_CO_TAPI_TRANSLATE_TAPI_CALLPARAMS  0xFE001004
#define OID_CO_TAPI_TRANSLATE_NDIS_CALLPARAMS  0xFE001005
#define OID_CO_TAPI_TRANSLATE_TAPI_SAP  0xFE001006
#define OID_CO_TAPI_GET_CALL_DIAGNOSTICS  0xFE001007
#define OID_CO_TAPI_REPORT_DIGITS  0xFE001008
#define OID_CO_TAPI_DONT_REPORT_DIGITS  0xFE001009

#define OID_PNP_CAPABILITIES  0xFD010100
#define OID_PNP_SET_POWER  0xFD010101
#define OID_PNP_QUERY_POWER  0xFD010102
#define OID_PNP_ADD_WAKE_UP_PATTERN  0xFD010103
#define OID_PNP_REMOVE_WAKE_UP_PATTERN  0xFD010104
#define OID_PNP_WAKE_UP_PATTERN_LIST  0xFD010105
#define OID_PNP_ENABLE_WAKE_UP  0xFD010106

#define OID_PNP_WAKE_UP_OK  0xFD020200
#define OID_PNP_WAKE_UP_ERROR  0xFD020201

#define NDIS_PNP_WAKE_UP_MAGIC_PACKET  0x00000001
#define NDIS_PNP_WAKE_UP_PATTERN_MATCH  0x00000002
#define NDIS_PNP_WAKE_UP_LINK_CHANGE  0x00000004

#define OID_TCP_TASK_OFFLOAD  0xFC010201
#define OID_TCP_TASK_IPSEC_ADD_SA  0xFC010202
#define OID_TCP_TASK_IPSEC_DELETE_SA  0xFC010203
#define OID_TCP_SAN_SUPPORT  0xFC010204

#define OID_FFP_SUPPORT  0xFC010210
#define OID_FFP_FLUSH  0xFC010211
#define OID_FFP_CONTROL  0xFC010212
#define OID_FFP_PARAMS  0xFC010213
#define OID_FFP_DATA  0xFC010214

#define OID_FFP_DRIVER_STATS  0xFC020210
#define OID_FFP_ADAPTER_STATS  0xFC020211

#define OID_QOS_TC_SUPPORTED  0xFB010100
#define OID_QOS_REMAINING_BANDWIDTH  0xFB010101
#define OID_QOS_ISSLOW_FLOW  0xFB010102
#define OID_QOS_BESTEFFORT_BANDWIDTH  0xFB010103
#define OID_QOS_LATENCY  0xFB010104
#define OID_QOS_FLOW_IP_CONFORMING  0xFB010105
#define OID_QOS_FLOW_COUNT  0xFB010106
#define OID_QOS_NON_BESTEFFORT_LIMIT  0xFB010107
#define OID_QOS_SCHEDULING_PROFILES_SUPPORTED  0xFB010108
#define OID_QOS_CURRENT_SCHEDULING_PROFILE  0xFB010109
#define OID_QOS_TIMER_RESOLUTION  0xFB01010A
#define OID_QOS_STATISTICS_BUFFER  0xFB01010B
#define OID_QOS_HIERARCHY_CLASS  0xFB01010C
#define OID_QOS_FLOW_MODE  0xFB01010D
#define OID_QOS_ISSLOW_FRAGMENT_SIZE  0xFB01010E
#define OID_QOS_FLOW_IP_NONCONFORMING  0xFB01010F
#define OID_QOS_FLOW_8021P_CONFORMING  0xFB010110
#define OID_QOS_FLOW_8021P_NONCONFORMING  0xFB010111

#define OFFLOAD_MAX_SAS  3

#define OFFLOAD_INBOUND_SA  0x0001
#define OFFLOAD_OUTBOUND_SA  0x0002

#define NDIS_PROTOCOL_ID_DEFAULT  0x00
#define NDIS_PROTOCOL_ID_TCP_IP  0x02
#define NDIS_PROTOCOL_ID_IPX  0x06
#define NDIS_PROTOCOL_ID_NBF  0x07
#define NDIS_PROTOCOL_ID_MAX  0x0F
#define NDIS_PROTOCOL_ID_MASK  0x0F

#define NETWORK_ADDRESS_LENGTH_IP sizeof (NETWORK_ADDRESS_IP)
#define NETWORK_ADDRESS_LENGTH_IPX sizeof (NETWORK_ADDRESS_IPX)

#define READABLE_LOCAL_CLOCK  0x00000001
#define CLOCK_NETWORK_DERIVED  0x00000002
#define CLOCK_PRECISION  0x00000004
#define RECEIVE_TIME_INDICATION_CAPABLE  0x00000008
#define TIMED_SEND_CAPABLE  0x00000010
#define TIME_STAMP_CAPABLE  0x00000020

#define NDIS_DEVICE_WAKE_UP_ENABLE  0x00000001

#define WAN_PROTOCOL_KEEPS_STATS  0x00000001

#define fNDIS_GUID_TO_OID  0x00000001
#define fNDIS_GUID_TO_STATUS  0x00000002
#define fNDIS_GUID_ANSI_STRING  0x00000004
#define fNDIS_GUID_UNICODE_STRING  0x00000008
#define fNDIS_GUID_ARRAY  0x00000010

#define NDIS_PACKET_TYPE_DIRECTED  0x00000001
#define NDIS_PACKET_TYPE_MULTICAST  0x00000002
#define NDIS_PACKET_TYPE_ALL_MULTICAST  0x00000004
#define NDIS_PACKET_TYPE_BROADCAST  0x00000008
#define NDIS_PACKET_TYPE_SOURCE_ROUTING  0x00000010
#define NDIS_PACKET_TYPE_PROMISCUOUS  0x00000020
#define NDIS_PACKET_TYPE_SMT  0x00000040
#define NDIS_PACKET_TYPE_ALL_LOCAL  0x00000080
#define NDIS_PACKET_TYPE_GROUP  0x00001000
#define NDIS_PACKET_TYPE_ALL_FUNCTIONAL  0x00002000
#define NDIS_PACKET_TYPE_FUNCTIONAL  0x00004000
#define NDIS_PACKET_TYPE_MAC_FRAME  0x00008000

#define NDIS_RING_SIGNAL_LOSS  0x00008000
#define NDIS_RING_HARD_ERROR  0x00004000
#define NDIS_RING_SOFT_ERROR  0x00002000
#define NDIS_RING_TRANSMIT_BEACON  0x00001000
#define NDIS_RING_LOBE_WIRE_FAULT  0x00000800
#define NDIS_RING_AUTO_REMOVAL_ERROR  0x00000400
#define NDIS_RING_REMOVE_RECEIVED  0x00000200
#define NDIS_RING_COUNTER_OVERFLOW  0x00000100
#define NDIS_RING_SINGLE_STATION  0x00000080
#define NDIS_RING_RING_RECOVERY  0x00000040

#define NDIS_PROT_OPTION_ESTIMATED_LENGTH  0x00000001
#define NDIS_PROT_OPTION_NO_LOOPBACK  0x00000002
#define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT  0x00000004

#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA  0x00000001
#define NDIS_MAC_OPTION_RECEIVE_SERIALIZED  0x00000002
#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND  0x00000004
#define NDIS_MAC_OPTION_NO_LOOPBACK  0x00000008
#define NDIS_MAC_OPTION_FULL_DUPLEX  0x00000010
#define NDIS_MAC_OPTION_EOTX_INDICATION  0x00000020
#define NDIS_MAC_OPTION_8021P_PRIORITY  0x00000040
#define NDIS_MAC_OPTION_RESERVED  0x80000000

#define NDIS_MEDIA_CAP_TRANSMIT  0x00000001
#define NDIS_MEDIA_CAP_RECEIVE  0x00000002

#define NDIS_CO_MAC_OPTION_DYNAMIC_LINK_SPEED  0x00000001

#define BPC_MIN_DIMENSION  1
#define BPC_MAX_BUFFER_SIZE  64
#define BPC_MIN_BUFFER_SIZE  4
#define BPC_DEVICE_ANY  ((BPC_HANDLE) 0xFFFFFFFF)

#define BPC_STREAM_TYPE_GENERIC_MIN  0x01000000
#define BPC_STREAM_TYPE_RAW  0x01000000
#define BPC_STREAM_TYPE_MPT_128  0x01000001
#define BPC_STREAM_TYPE_MPT_128_CRC  0x01000002
#define BPC_STREAM_TYPE_IP  0x01000003
#define BPC_STREAM_TYPE_PROVIDER_MIN  0x02000000
#define BPC_STREAM_TYPE_PROVIDER_MAX  0x02ffffff
#define BPC_STREAM_TYPE_ADAPTER_MIN  0x03000000
#define BPC_STREAM_TYPE_ADAPTER_MAX  0x03ffffff

#define CbDevices(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICES, rgnhDevices) + (cnt) * sizeof(BPC_HANDLE))

#define CbDeviceCaps(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICE_CAPS, rgulStreamTypes) + (cnt) * sizeof(ULONG))

#define BPCCapBusMasteredData  0x01
#define BPCCapIndependentTuner  0x02
#define BPCCapExternalDataBus  0x04
#define BPCCapLowSpeedData  0x10
#define BPCCapHighSpeedData  0x20

#define CbDeviceSettings(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICE_SETTINGS, rgulAddressConnection) + (cnt) * sizeof(ULONG))

#define BPC_CONNECT_STATE_UNCOMMITTED  0
#define BPC_CONNECT_STATE_QUEUED  1
#define BPC_CONNECT_STATE_ACTIVE  2
#define BPC_CONNECT_STATE_DISCONNECTING 3

#define BPC_GUIDE_GENERIC_MIN  0x01000000
#define BPC_GUIDE_GENERIC_MAX  0x01ffffff
#define BPC_GUIDE_PROVIDER_MIN  0x02000000
#define BPC_GUIDE_PROVIDER_MAX  0x02ffffff
#define BPC_GUIDE_ADAPTER_MIN  0x03000000
#define BPC_GUIDE_ADAPTER_MAX  0x03ffffff

#define CbConnect(cnt)  (FIELD_OFFSET(NDIS_BPC_CONNECT, rgulAddress) + (cnt) * sizeof(ULONG))

#define BPC_CATEGORY_BPC  0x01000000
#define BPC_CATEGORY_PROVIDER  0x02000000
#define BPC_CATEGORY_ADAPTER  0x03000000

#define BPC_STATUS_CONNECTED  0x00000001
#define BPC_STATUS_QUEUED  0x00000002
#define BPC_STATUS_ACTIVE  0x00000003
#define BPC_STATUS_DISCONNECTED  0x00000004
#define BPC_STATUS_OVERFLOW  0x00000005
#define BPC_STATUS_DATA_STOP  0x00000006
#define BPC_STATUS_DATA_START  0x00000007
#define BPC_STATUS_DATA_ERROR  0x00000008

typedef ULONG NDIS_OID, *PNDIS_OID;

typedef UNALIGNED struct _NDIS_STATISTICS_VALUE {
    NDIS_OID Oid;
    ULONG DataLength;
    UCHAR Data[1];
} NDIS_STATISTICS_VALUE, *PNDIS_STATISTICS_VALUE;

typedef struct _NDIS_VAR_DATA_DESC {
    USHORT Length;
    USHORT MaximumLength;
    ULONG_PTR Offset;
} NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;

typedef struct NDIS_CO_DEVICE_PROFILE {
    NDIS_VAR_DATA_DESC DeviceDescription;
    NDIS_VAR_DATA_DESC DevSpecificInfo;
    ULONG ulTAPISupplementaryPassThru;
    ULONG ulAddressModes;
    ULONG ulNumAddresses;
    ULONG ulBearerModes;
    ULONG ulMaxTxRate;
    ULONG ulMinTxRate;
    ULONG ulMaxRxRate;
    ULONG ulMinRxRate;
    ULONG ulMediaModes;
    ULONG ulGenerateToneModes;
    ULONG ulGenerateToneMaxNumFreq;
    ULONG ulGenerateDigitModes;
    ULONG ulMonitorToneMaxNumFreq;
    ULONG ulMonitorToneMaxNumEntries;
    ULONG ulMonitorDigitModes;
    ULONG ulGatherDigitsMinTimeout;
    ULONG ulGatherDigitsMaxTimeout;
    ULONG ulDevCapFlags;
    ULONG ulMaxNumActiveCalls;
    ULONG ulAnswerMode;
    ULONG ulUUIAcceptSize;
    ULONG ulUUIAnswerSize;
    ULONG ulUUIMakeCallSize;
    ULONG ulUUIDropSize;
    ULONG ulUUISendUserUserInfoSize;
    ULONG ulUUICallInfoSize;
} NDIS_CO_DEVICE_PROFILE, *PNDIS_CO_DEVICE_PROFILE;

typedef ULONG IPAddr, IPMask;
typedef ULONG SPI_TYPE;

typedef enum _OFFLOAD_OPERATION_E {
    AUTHENTICATE = 1,
    ENCRYPT
} OFFLOAD_OPERATION_E;

typedef struct _OFFLOAD_ALGO_INFO {
    ULONG algoIdentifier;
    ULONG algoKeylen;
    ULONG algoRounds;
} OFFLOAD_ALGO_INFO, *POFFLOAD_ALGO_INFO;

typedef enum _OFFLOAD_CONF_ALGO {
    OFFLOAD_IPSEC_CONF_NONE,
    OFFLOAD_IPSEC_CONF_DES,
    OFFLOAD_IPSEC_CONF_RESERVED,
    OFFLOAD_IPSEC_CONF_3_DES,
    OFFLOAD_IPSEC_CONF_MAX
} OFFLOAD_CONF_ALGO;

typedef enum _OFFLOAD_INTEGRITY_ALGO {
    OFFLOAD_IPSEC_INTEGRITY_NONE,
    OFFLOAD_IPSEC_INTEGRITY_MD5,
    OFFLOAD_IPSEC_INTEGRITY_SHA,
    OFFLOAD_IPSEC_INTEGRITY_MAX
} OFFLOAD_INTEGRITY_ALGO;

typedef struct _OFFLOAD_SECURITY_ASSOCIATION {
    OFFLOAD_OPERATION_E Operation;
    SPI_TYPE SPI;
    OFFLOAD_ALGO_INFO IntegrityAlgo;
    OFFLOAD_ALGO_INFO ConfAlgo;
    OFFLOAD_ALGO_INFO Reserved;
} OFFLOAD_SECURITY_ASSOCIATION, *POFFLOAD_SECURITY_ASSOCIATION;

typedef struct _OFFLOAD_IPSEC_ADD_SA {
    IPAddr SrcAddr;
    IPMask SrcMask;
    IPAddr DestAddr;
    IPMask DestMask;
    ULONG Protocol;
    USHORT SrcPort;
    USHORT DestPort;
    IPAddr SrcTunnelAddr;
    IPAddr DestTunnelAddr;
    USHORT Flags;
    SHORT NumSAs;
    OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
    HANDLE OffloadHandle;
    ULONG KeyLen;
    UCHAR KeyMat[1];
} OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA;

typedef struct _OFFLOAD_IPSEC_DELETE_SA {
    HANDLE OffloadHandle;
} OFFLOAD_IPSEC_DELETE_SA, *POFFLOAD_IPSEC_DELETE_SA;

typedef enum _NDIS_MEDIUM {
    NdisMedium802_3,
    NdisMedium802_5,
    NdisMediumFddi,
    NdisMediumWan,
    NdisMediumLocalTalk,
    NdisMediumDix,
    NdisMediumArcnetRaw,
    NdisMediumArcnet878_2,
    NdisMediumAtm,
    NdisMediumWirelessWan,
    NdisMediumIrda,
    NdisMediumBpc,
    NdisMediumCoWan,
    NdisMedium1394,
    NdisMediumMax
} NDIS_MEDIUM, *PNDIS_MEDIUM;

typedef enum _NDIS_PHYSICAL_MEDIUM {
    NdisPhysicalMediumReserved0,
    NdisPhysicalMediumWirelessLan,
    NdisPhysicalMediumCableModem,
    NdisPhysicalMediumPhoneLine,
    NdisPhysicalMediumPowerLine,
    NdisPhysicalMediumDSL,
    NdisPhysicalMediumMax
} NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM;

typedef struct _TRANSPORT_HEADER_OFFSET {
    USHORT ProtocolType;
    USHORT HeaderOffset;
} TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;

typedef struct _NETWORK_ADDRESS {
    USHORT AddressLength;
    USHORT AddressType;
    UCHAR Address[1];
} NETWORK_ADDRESS, *PNETWORK_ADDRESS;

typedef struct _NETWORK_ADDRESS_LIST {
    LONG AddressCount;
    USHORT AddressType;
    NETWORK_ADDRESS Address[1];
} NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST;

typedef struct _NETWORK_ADDRESS_IP {
    USHORT sin_port;
    ULONG in_addr;
    UCHAR sin_zero[8];
} NETWORK_ADDRESS_IP, *PNETWORK_ADDRESS_IP;

typedef struct _NETWORK_ADDRESS_IPX {
    ULONG NetworkAddress;
    UCHAR NodeAddress[6];
    USHORT Socket;
} NETWORK_ADDRESS_IPX, *PNETWORK_ADDRESS_IPX;

typedef enum _NDIS_HARDWARE_STATUS {
    NdisHardwareStatusReady,
    NdisHardwareStatusInitializing,
    NdisHardwareStatusReset,
    NdisHardwareStatusClosing,
    NdisHardwareStatusNotReady
} NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;

typedef struct _GEN_GET_TIME_CAPS {
    ULONG Flags;
    ULONG ClockPrecision;
} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;

typedef struct _GEN_GET_NETCARD_TIME {
    ULONGLONG ReadTime;
} GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;

typedef struct _NDIS_PM_PACKET_PATTERN {
    ULONG Priority;
    ULONG Reserved;
    ULONG MaskSize;
    ULONG PatternOffset;
    ULONG PatternSize;
    ULONG PatternFlags;
} NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN;

typedef enum _NDIS_DEVICE_POWER_STATE {
    NdisDeviceStateUnspecified = 0,
    NdisDeviceStateD0,
    NdisDeviceStateD1,
    NdisDeviceStateD2,
    NdisDeviceStateD3,
    NdisDeviceStateMaximum
} NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE;

typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES {
    NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
    NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
    NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
} NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;

typedef struct _NDIS_PNP_CAPABILITIES {
    ULONG Flags;
    NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities;
} NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;

typedef enum _NDIS_FDDI_ATTACHMENT_TYPE {
    NdisFddiTypeIsolated = 1,
    NdisFddiTypeLocalA,
    NdisFddiTypeLocalB,
    NdisFddiTypeLocalAB,
    NdisFddiTypeLocalS,
    NdisFddiTypeWrapA,
    NdisFddiTypeWrapB,
    NdisFddiTypeWrapAB,
    NdisFddiTypeWrapS,
    NdisFddiTypeCWrapA,
    NdisFddiTypeCWrapB,
    NdisFddiTypeCWrapS,
    NdisFddiTypeThrough
} NDIS_FDDI_ATTACHMENT_TYPE, *PNDIS_FDDI_ATTACHMENT_TYPE;

typedef enum _NDIS_FDDI_RING_MGT_STATE {
    NdisFddiRingIsolated = 1,
    NdisFddiRingNonOperational,
    NdisFddiRingOperational,
    NdisFddiRingDetect,
    NdisFddiRingNonOperationalDup,
    NdisFddiRingOperationalDup,
    NdisFddiRingDirected,
    NdisFddiRingTrace
} NDIS_FDDI_RING_MGT_STATE, *PNDIS_FDDI_RING_MGT_STATE;

typedef enum _NDIS_FDDI_LCONNECTION_STATE {
    NdisFddiStateOff = 1,
    NdisFddiStateBreak,
    NdisFddiStateTrace,
    NdisFddiStateConnect,
    NdisFddiStateNext,
    NdisFddiStateSignal,
    NdisFddiStateJoin,
    NdisFddiStateVerify,
    NdisFddiStateActive,
    NdisFddiStateMaintenance
} NDIS_FDDI_LCONNECTION_STATE, *PNDIS_FDDI_LCONNECTION_STATE;

typedef enum _NDIS_WAN_MEDIUM_SUBTYPE {
    NdisWanMediumHub,
    NdisWanMediumX_25,
    NdisWanMediumIsdn,
    NdisWanMediumSerial,
    NdisWanMediumFrameRelay,
    NdisWanMediumAtm,
    NdisWanMediumSonet,
    NdisWanMediumSW56K,
    NdisWanMediumPPTP,
    NdisWanMediumL2TP,
    NdisWanMediumIrda,
    NdisWanMediumParallel
} NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE;

typedef enum _NDIS_WAN_HEADER_FORMAT {
    NdisWanHeaderNative,
    NdisWanHeaderEthernet
} NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT;

typedef enum _NDIS_WAN_QUALITY {
    NdisWanRaw,
    NdisWanErrorControl,
    NdisWanReliable
} NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;

typedef struct _NDIS_WAN_PROTOCOL_CAPS {
    ULONG Flags;
    ULONG Reserved;
} NDIS_WAN_PROTOCOL_CAPS, *PNDIS_WAN_PROTOCOL_CAPS;

typedef enum _NDIS_802_5_RING_STATE {
    NdisRingStateOpened = 1,
    NdisRingStateClosed,
    NdisRingStateOpening,
    NdisRingStateClosing,
    NdisRingStateOpenFailure,
    NdisRingStateRingFailure
} NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE;

typedef enum _NDIS_MEDIA_STATE {
    NdisMediaStateConnected,
    NdisMediaStateDisconnected
} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;

typedef ULONG Priority_802_3;

typedef struct _NDIS_CO_LINK_SPEED {
    ULONG Outbound;
    ULONG Inbound;
} NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED;

#ifndef _NDIS_
typedef int NDIS_STATUS, *PNDIS_STATUS;
#endif

typedef struct _NDIS_GUID {
    GUID Guid;
    union {
        NDIS_OID Oid;
        NDIS_STATUS Status;
    };
    ULONG Size;
    ULONG Flags;
} NDIS_GUID, *PNDIS_GUID;

#ifdef IRDA
typedef struct _NDIS_IRDA_PACKET_INFO {
    ULONG ExtraBOFs;
    ULONG MinTurnAroundTime;
} NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO;
#endif

#ifdef WIRELESS_WAN
#define OID_INDICATION_REQUEST_ENABLE  0x0000
#define OID_INDICATION_REQUEST_CANCEL  0x0001

typedef enum _NDIS_WW_NETWORK_TYPE {
    NdisWWGeneric,
    NdisWWMobitex,
    NdisWWPinpoint,
    NdisWWCDPD,
    NdisWWArdis,
    NdisWWDataTAC,
    NdisWWMetricom,
    NdisWWGSM,
    NdisWWCDMA,
    NdisWWTDMA,
    NdisWWAMPS,
    NdisWWInmarsat,
    NdisWWpACT,
    NdisWWFlex,
    NdisWWIDEN
} NDIS_WW_NETWORK_TYPE;

typedef enum _NDIS_WW_HEADER_FORMAT {
    NdisWWDIXEthernetFrames,
    NdisWWMPAKFrames,
    NdisWWRDLAPFrames,
    NdisWWMDC4800Frames,
    NdisWWNCLFrames
} NDIS_WW_HEADER_FORMAT;

typedef enum _NDIS_WW_ENCRYPTION_TYPE {
    NdisWWUnknownEncryption = -1,
    NdisWWNoEncryption,
    NdisWWDefaultEncryption,
    NdisWWDESEncryption,
    NdisWWRC2Encryption,
    NdisWWRC4Encryption,
    NdisWWRC5Encryption
} NDIS_WW_ENCRYPTION_TYPE, *PNDIS_WW_ENCRYPTION_TYPE;

typedef enum _WW_ADDRESS_FORMAT {
    WW_IEEE_ADDRESS = 0,
    WW_MOBITEX_MAN_ADDRESS,
    WW_DATATAC_RDLAP_ADDRESS,
    WW_DATATAC_MDC4800_ADDRESS,
    WW_DATATAC_RESERVED,
    WW_IPv4_ADDRESS,
    WW_IPv6_ADDRESS,
    WW_PROPRIETARY_ADDRESS,
} WW_ADDRESS_FORMAT;

typedef enum _WW_GEN_SUM_EXCEPTION {
    SIM_STATUS_OK = 0,
    SIM_STATUS_ERROR,
    SIM_STATUS_MISSING,
    SIM_STATUS_NO_RESPONSE,
    SIM_STATUS_REMOVED,
    SIM_STATUS_CRYPT_ERROR,
    SIM_STATUS_AUTH_ERROR,
    SIM_STATUS_NEED_PIN,
    SIM_STATUS_NEED_PUK,
    SIM_STATUS_WRONG,
} WW_GEN_SIM_EXCEPTION;

typedef struct _NDIS_WW_INDICATION_REQUEST {
    NDIS_OID Oid;
    ULONG uIndicationFlag;
    ULONG uApplicationToken;
    HANDLE hIndicationHandle;
    INT iPollingInterval;
    NDIS_VAR_DATA_DESC InitialValue;
    NDIS_VAR_DATA_DESC OIDIndicationValue;
    NDIS_VAR_DATA_DESC TriggerValue;
} NDIS_WW_INDICATION_REQUEST, *PNDIS_WW_INDICATION_REQUEST;

typedef struct _WW_DEVICE_INFO {
    NDIS_VAR_DATA_DESC Manufacturer;
    NDIS_VAR_DATA_DESC ModelNum;
    NDIS_VAR_DATA_DESC SWVersionNum;
    NDIS_VAR_DATA_DESC SerialNum;
} WW_DEVICE_INFO, *PWW_DEVICE_INFO;

typedef INT WW_OPERATION_MODE;
typedef INT WW_LOCK_STATUS;
typedef INT WW_DISABLE_TRANSMITTER;

typedef NDIS_VAR_DATA_DESC WW_NETWORK_ID;
typedef NDIS_VAR_DATA_DESC WW_PERMANENT_ADDRESS;

typedef struct _WW_CURRENT_ADDRESS {
    NDIS_WW_HEADER_FORMAT Format;
    NDIS_VAR_DATA_DESC Address;
} WW_CURRENT_ADDRESS, *PWW_CURRENT_ADDRESS;

typedef BOOLEAN WW_SUSPEND_DRIVER;

typedef NDIS_VAR_DATA_DESC WW_BASESTATION_ID;
typedef NDIS_VAR_DATA_DESC WW_CHANNEL_ID;

typedef BOOLEAN WW_ENCRYPTION_STATE;

typedef INT WW_CHANNEL_QUALITY;
typedef INT WW_REGISTRATION_STATUS;

typedef ULONG WW_RADIO_LINK_SPEED;
typedef ULONG WW_LATENCY;

typedef INT WW_BATTERY_LEVEL;
typedef INT WW_EXTERNAL_POWER;

typedef struct _WW_PING_ADDRESS {
    WW_ADDRESS_FORMAT Format;
    NDIS_VAR_DATA_DESC TargetAddress;
    UINT uTime;
} WW_PING_ADDRESS;

typedef struct _WW_RECEIVE_SIGNAL_STRENGTH_INDICATOR {
    INT iDecibels;
    INT iFactor;
} WW_RECEIVE_SIGNAL_STRENGTH_INDICATOR;

typedef struct _WW_SIM_STATUS {
    BOOLEAN bHasSIM;
    BOOLEAN bBlocked;
    BOOLEAN bLocked;
    BOOLEAN bInitialized;
    UINT uCountdown;
} WW_SIM_STATUS;

typedef struct _WW_ENABLE_SIM_PIN {
    BOOLEAN bEnabled;
    NDIS_VAR_DATA_DESC CurrentPIN;
} WW_ENABLE_SIM_PIN;

typedef struct _WW_CHANGE_SIM_PIN {
    NDIS_VAR_DATA_DESC OldPIN;
    NDIS_VAR_DATA_DESC NewPIN;
} WW_CHANGE_SIM_PIN;

typedef NDIS_VAR_DATA_DESC WW_ENABLE_SIM_PUK;
typedef NDIS_VAR_DATA_DESC WW_MET_FUNCTION;

typedef BOOLEAN WW_TAC_COMPRESSION;

typedef struct _WW_TAC_SETCONFIG {
    NDIS_VAR_DATA_DESC RCV_MODE;
    NDIS_VAR_DATA_DESC TX_CONTROL;
    NDIS_VAR_DATA_DESC RX_CONTROL;
    NDIS_VAR_DATA_DESC FLOW_CONTROL;
    NDIS_VAR_DATA_DESC RESET_CNF;
    NDIS_VAR_DATA_DESC READ_CNF;
} WW_TAC_SETCONFIG, *PWW_TAC_SETCONFIG;

typedef struct _WW_TAC_GETSTATUS {
    BOOLEAN Action;
    NDIS_VAR_DATA_DESC Command;
    NDIS_VAR_DATA_DESC Option;
    NDIS_VAR_DATA_DESC Response;
} WW_TAC_GETSTATUS, *PWW_TAC_GETSTATUS;

typedef NDIS_VAR_DATA_DESC WW_TAC_USERHEADER;

typedef struct _WW_TAC_GET_RESPONSE {
    UINT SDUTag;
    NDIS_VAR_DATA_DESC Response;
} WW_TAC_GET_RESPONSE;

typedef INT WW_TAC_DISABLE_RECEIVER;
typedef INT WW_TAC_ANTENNA_MODE;
typedef INT WW_TAC_FLUSH_DATA;
typedef INT WW_TAC_SHUTDOWN_DEVICE;

typedef BOOLEAN WW_TAC_TRANSMITTER_KEYED;

typedef struct _WW_TAC_SYSTEM_TABLE {
    UINT SystemCount;
    UCHAR ContryTable[32];
    UCHAR PrefixTable[32];
    UCHAR IDTable[32];
} WW_TAC_SYSTEM_TABLE;

typedef struct _WW_TAC_CHANNEL_TABLE {
    UINT ChannelCount;
    UCHAR ChannelTable[64];
    UCHAR AttrTable[64];
} WW_TAC_CHANNEL_TABLE;

typedef NDIS_VAR_DATA_DESC WW_TAC_STATISTICS;

typedef struct _WW_ARD_SNDCP {
    NDIS_VAR_DATA_DESC Version;
    INT BlockSize;
    INT Window;
} WW_ARD_SNDCP, *PWW_ARD_SNDCP;

typedef BOOLEAN WW_ARD_CHANNEL_STATUS;

typedef struct _WW_ARD_DATAGRAM {
    BOOLEAN LoadLevel;
    INT SessionTime;
    NDIS_VAR_DATA_DESC HostAddr;
    NDIS_VAR_DATA_DESC THostAddr;
} WW_ARD_DATAGRAM, *PWW_ARD_DATAGRAM;

typedef struct _WW_CDPD_SPNI {
    ULONG SPNI[10];
    INT OperatingMode;
} WW_CDPD_SPNI, *PWW_CDPD_SPNI;

typedef struct _WW_CDPD_WIDE_AREA_SERVICE_ID {
    ULONG WASI[10];
    INT OperatingMode;
} WW_CDPD_WIDE_AREA_SERVICE_ID, *PWW_CDPD_WIDE_AREA_SERVICE_ID;

typedef INT WW_CDPD_AREA_COLOR;

typedef ULONG WW_CDPD_TX_POWER_LEVEL;

typedef NDIS_VAR_DATA_DESC WW_CDPD_EID;
typedef INT WW_CDPD_HEADER_COMPRESSION;

typedef INT WW_CDPD_DATA_COMPRESSION;

typedef struct _WW_CDPD_CHANNEL_SELECT {
    ULONG ChannelID;
    ULONG fixedDuration;
} WW_CDPD_CHANNEL_SELECT, *PWW_CDPD_CHANNEL_SELECT;

typedef enum _WW_CDPD_CHANNEL_STATE {
    CDPDChannelNotAvail,
    CDPDChannelScanning,
    CDPDChannelInitAcquired,
    CDPDChannelAcquired,
    CDPDChannelSleeping,
    CDPDChannelWaking,
    CDPDChannelCSDialing,
    CDPDChannelCSRedial,
    CDPDChannelCSAnswering,
    CDPDChannelCSConnected,
    CDPDChannelCSSuspended
} WW_CDPD_CHANNEL_STATE, *PWW_CDPD_CHANNEL_STATE;

typedef enum _WW_CDPD_NEI_FORMAT {
    CDPDNeiIPv4,
    CDPDNeiCLNP,
    CDPDNeiIPv6
} WW_CDPD_NEI_FORMAT, *PWW_CDPD_NEI_FORMAT;

typedef enum _WW_CDPD_NEI_TYPE {
    CDPDNeiIndividual,
    CDPDNeiMulticast,
    CDPDNeiBroadcast
} WW_CDPD_NEI_TYPE;

typedef struct _WW_CDPD_NEI {
    ULONG uNeiIndex;
    WW_CDPD_NEI_FORMAT NeiFormat;
    WW_CDPD_NEI_TYPE NeiType;
    WORD NeiGmid;

    NDIS_VAR_DATA_DESC NeiAddress;
} WW_CDPD_NEI;

typedef enum _WW_CDPD_NEI_STATE {
    CDPDUnknown,
    CDPDRegistered,
    CDPDDeregistered
} WW_CDPD_NEI_STATE, *PWW_CDPD_NEI_STATE;

typedef enum _WW_CDPD_NEI_SUB_STATE {
    CDPDPending,
    CDPDNoReason,
    CDPDMDISNotCapable,
    CDPDNEINotAuthorized,
    CDPDInsufficientAuth,
    CDPDUnsupportedAuth,
    CDPDUsageExceeded,
    CDPDDeniedThisNetwork
} WW_CDPD_NEI_SUB_STATE;

typedef struct _WW_CDPD_NEI_REG_STATE {
    ULONG uNeiIndex;
    WW_CDPD_NEI_STATE NeiState;
    WW_CDPD_NEI_SUB_STATE NeiSubState;
} WW_CDPD_NEI_REG_STATE, *PWW_CDPD_NEI_REG_STATE;

typedef struct _WW_CDPD_SERVICE_PROVIDER_ID {
    ULONG SPI[10];
    INT OperatingMode;
} WW_CDPD_SERVICE_PROVIDER_ID, *PWW_CDPD_SERVICE_PROVIDER_ID;

typedef INT WW_CDPD_SLEEP_MODE;

typedef ULONG WW_CDPD_TEI;

typedef struct _WW_CDPD_CIRCUIT_SWITCHED {
    INT service_preference;
    INT service_status;
    INT connect_rate;
    NDIS_VAR_DATA_DESC dial_code[20];
    ULONG sid;
    INT a_b_side_selection;
    INT AMPS_channel;
    ULONG action;
    NDIS_VAR_DATA_DESC default_dial[20];
    NDIS_VAR_DATA_DESC call_back[20];
    ULONG sid_list[10];
    ULONG inactivity_timer;
    ULONG receive_timer;
    ULONG conn_resp_timer;
    ULONG reconn_resp_timer;
    ULONG disconn_timer;
    ULONG NEI_reg_timer;
    ULONG reconn_retry_timer;
    ULONG link_reset_timer;
    ULONG link_reset_ack_timer;
    ULONG n401_retry_limit;
    ULONG n402_retry_limit;
    ULONG n404_retry_limit;
    ULONG n405_retry_limit;
} WW_CDPD_CIRCUIT_SWITCHED, *WW_PCDPD_CIRCUIT_SWITCHED;

    typedef ULONG WW_CDPD_RSSI;

typedef INT WW_CDPD_CS_SERVICE_PREFERENCE;
typedef INT WW_CDPD_CS_SERVICE_STATUS;

typedef struct _WW_CDPD_CS_INFO {
    INT ConnectRage;
    NDIS_VAR_DATA_DESC DialCode;
    UINT SID;
    INT ABSideSelection;
    INT AMPSChannel;
} WW_CDPD_CS_INFO;

typedef UINT WW_CDPD_CS_SUSPEND;

typedef NDIS_VAR_DATA_DESC WW_CDPD_DEFAULT_DIAL_CODE;

typedef struct _WW_CDPD_CS_CALLBACK {
    UINT Enabled;
    NDIS_VAR_DATA_DESC Number;
} WW_CDPD_CS_CALLBACK;

typedef struct _WW_CDPD_CS_SID_LIST {
    UINT AMPSystemId[10];
} WW_CDPD_CS_SID_LIST;

typedef struct _WW_CDPD_CS_CONFIGURATION {
    UINT InactivityTimer;
    UINT ReceiveTimer;
    UINT ConnResTimer;
    UINT ReconnRespTimer;
    UINT DisconnTimer;
    UINT NEIRegTimer;
    UINT ReconnRetryTimer;
    UINT LinkResetTimer;
    UINT LinkResetAckTimer;
    UINT n401RetryLimit;
    UINT n402RetryLimit;
    UINT n404RetryLimit;
    UINT n405RetryLimit;
} WW_CDPD_CS_CONFIGURATION;

typedef INT WW_PIN_AUTHORIZED;

typedef struct _WW_PIN_LOCATION {
    INT Latitude;
    INT Longitude;
    INT Altitude;
    INT FixTime;
    INT NetTime;
    INT LocQuality;
    INT LatReg;
    INT LongReg;
    INT GMTOffset;
} WW_PIN_LOCATION, *PWW_PIN_LOCATION;

typedef ULONG WW_MBX_MAILBOX_FLAG;

typedef struct _WW_MBX_PMAN {
    BOOLEAN ACTION;
    ULONG MAN;
    UCHAR PASSWORD[8];
} WW_MBX_PMAN, *PWW_MBX_PMAN;

typedef struct _WW_MBX_FLEXLIST {
    INT count;
    ULONG MAN[7];
} WW_MBX_FLEXLIST;

typedef struct _WW_MBX_GROUPLIST {
    INT count;
    ULONG MAN[15];
} WW_MBX_GROUPLIST;

typedef enum _WW_MBX_TRAFFIC_AREA {
    unknown_traffic_area,
    in_traffic_area,
    in_auth_traffic_area,
    unauth_traffic_area
} WW_MBX_TRAFFIC_AREA;

typedef INT WW_MBX_LIVE_DIE;

typedef struct _WW_MBX_CHANNEL_PAIR {
    ULONG Mobile_Tx;
    ULONG Mobile_Rx;
} WW_MBX_CHANNEL_PAIR, *PWW_MBX_CHANNEL_PAIR;

typedef struct _WW_MBX_TEMPDEFAULTLIST {
    ULONG Length;
    WW_MBX_CHANNEL_PAIR ChannelPair[1];
} WW_MBX_TEMPDEFAULTLIST, *WW_PMBX_TEMPDEFAULTLIST;

#endif /* WIRELESS_WAN */

typedef struct _BPC_FILETIME {
    ULONG dwLowDateTime;
    ULONG dwHighDateTime;
} BPC_FILETIME, *PBPC_FILETIME;

typedef PVOID BPC_HANDLE;

typedef enum _NDIS_BPC_INDICATE_REASON {
    bpcBufferFull = 0,
    bpcBufferForced,
    bpcBufferTimeOut,
    bpcBufferDiscontinuity,
    bpcBufferOverflow,
    bpcBufferStatusEvent
} NDIS_BPC_INDICATE_REASON, *PNDIS_BPC_INDICATE_REASON;

typedef struct _NDIS_BPC_ADAPTER_CAPS {
    ULONG ulBPCMajorRev;
    ULONG ulBPCMinorRev;
    ULONG ulcHSDataDevices;
    ULONG ulbpsHSDeviceMax;
    ULONG ulcLSDataDevices;
    ULONG ulbpsLSDeviceMax;
    ULONG ulcTuningDevices;
    ULONG ulcbLargestStatus;
    ULONG ulVendorId;
    ULONG ulAdapterId;
    GUID guidProvider;

} NDIS_BPC_ADAPTER_CAPS, *PNDIS_BPC_ADAPTER_CAPS;

typedef struct _NDIS_BPC_DEVICES {
    ULONG ulcDevices;
    BPC_HANDLE rgnhDevices[BPC_MIN_DIMENSION];

} NDIS_BPC_DEVICES, *PNDIS_BPC_DEVICES;

typedef struct NDIS_BPC_DEVICE_CAPS {
    BPC_HANDLE nhDevice;
    ULONG ulBPCCaps;
    ULONG ulbpsMax;
    ULONG ulcStreamTypes;
    ULONG rgulStreamTypes[BPC_MIN_DIMENSION];
} NDIS_BPC_DEVICE_CAPS, *PNDIS_BPC_DEVICE_CAPS;

typedef struct NDIS_BPC_DEVICE_SETTINGS {
    BPC_HANDLE nhDevice;
    ULONG ulBPCCaps;
    ULONG ulcConnections;
    BOOLEAN fEnabled;
    ULONG ulStreamType;
    ULONG ulcbAddressConnection;
    ULONG rgulAddressConnection[BPC_MIN_DIMENSION];
} NDIS_BPC_DEVICE_SETTINGS, *PNDIS_BPC_DEVICE_SETTINGS;

typedef struct NDIS_BPC_CONNECTION_STATUS {
    BPC_HANDLE nhConnection;
    BPC_HANDLE nhDevice;
    ULONG ulConnectPriority;
    ULONG ulDisconnectPriority;
    ULONG ulbpsAverage;
    ULONG ulbpsBurst;
    ULONG ulState;
    BOOLEAN fEnabled;
} NDIS_BPC_CONNECTION_STATUS, *PNDIS_BPC_CONNECTION_STATUS;

typedef struct NDIS_BPC_ADDRESS_COMPARE {
    BOOLEAN fEqual;
    ULONG ulcbFirstOffset;
    ULONG ulcbFirstLength;
    ULONG ulcbSecondOffset;
    ULONG ulcbSecondLength;
} NDIS_BPC_ADDRESS_COMPARE, *PNDIS_BPC_ADDRESS_COMPARE;

typedef struct NDIS_BPC_PROGRAM_GUIDE {
    ULONG ulGuideType;
    BPC_FILETIME ftLastUpdate;
    ULONG ulChangeNumber;
    ULONG ulcbGuideSize;
    ULONG rgulGuideData[BPC_MIN_DIMENSION];
} NDIS_BPC_PROGRAM_GUIDE, *PNDIS_BPC_PROGRAM_GUIDE;

typedef enum _NDIS_BPC_ERROR {
    bpcErrorUnknownFailure = 0xc0ff0000,
    bpcErrorHardwareFailure,
    bpcErrorProviderFailure,
    bpcErrorNoDataDevice,
    bpcErrorNoTuningDevice,
    bpcErrorDeviceNotCapable,
    bpcErrorConflictingDevice,
    bpcErrorConflictingCapability,
    bpcErrorNoBufferMemory,
    bpcErrorNoResources,
    bpcErrorAdapterClosing,
    bpcErrorConnectionClosing,
    bpcErrorTooComplex,
    bpcErrorProviderNotSupported,
    bpcErrorUnknownProviderStructure,
    bpcErrorAddressNotSupported,
    bpcErrorInvalidAddress,
    bpcErrorUnknownAdapterStructure
} NDIS_BPC_ERROR, *PNDIS_BPC_ERROR;

typedef struct NDIS_BPC_LAST_ERROR {
    ULONG ulErrorContext;
    ULONG ulBPCError;
    ULONG ulAdapterError;
    ULONG ulAdapterContext;
} NDIS_BPC_LAST_ERROR, *PNDIS_BPC_LAST_ERROR;

typedef struct NDIS_BPC_POOL {
    BPC_HANDLE nhConnection;
    ULONG ulcbPoolSize;
    ULONG ulcbMaxBufferSize;
    ULONG ulcbBufferReserved;
} NDIS_BPC_POOL, *PNDIS_BPC_POOL;

typedef struct NDIS_BPC_CONNECT {
    BPC_HANDLE nhConnection;
    BPC_HANDLE nhDevice;
    ULONG ulConnectPriority;
    ULONG ulDisconnectPriority;
    BOOLEAN fImmediate;
    ULONG ulcbAddress;
    GUID guidProvider;
    ULONG rgulAddress[BPC_MIN_DIMENSION];
} NDIS_BPC_CONNECT, *PNDIS_BPC_CONNECT;

typedef struct NDIS_BPC_COMMIT {
    ULONG ulcConnections;
    BPC_HANDLE rgnhConnections[BPC_MIN_DIMENSION];
} NDIS_BPC_COMMIT, *PNDIS_BPC_COMMIT;

typedef struct NDIS_BPC_DISCONNECT {
    BPC_HANDLE nhConnection;
} NDIS_BPC_DISCONNECT, *PNDIS_BPC_DISCONNECT;

typedef struct NDIS_BPC_CONNECTION_ENABLE {
    BPC_HANDLE nhConnection;
    BOOLEAN fEnabled;
} NDIS_BPC_CONNECTION_ENABLE, *PNDIS_BPC_CONNECTION_ENABLE;

typedef struct NDIS_BPC_POOL_RETURN {
    BPC_HANDLE nhConnection;
} NDIS_BPC_POOL_RETURN, *PNDIS_BPC_POOL_RETURN;

typedef struct NDIS_BPC_FORCE_RECEIVE {
    BPC_HANDLE nhConnection;
    ULONG ulReasonCode;
} NDIS_BPC_FORCE_RECEIVE, *PNDIS_BPC_FORCE_RECEIVE;

typedef struct NDIS_BPC_MEDIA_SPECIFIC_INFORMATION {
    BPC_HANDLE nhConnection;
    ULONG ulBPCStreamType;
    ULONG ulReasonCode;
    PVOID pvMiniportReserved1;
    ULONG ulMiniportReserved2;
} NDIS_BPC_MEDIA_SPECIFIC_INFORMATION, *PNDIS_BPC_MEDIA_SPECIFIC_INFORMATION;

typedef struct NDIS_BPC_STATUS {
    ULONG ulStatusCategory;
    ULONG ulStatusType;
    ULONG ulcbStatus;
    ULONG rgulStatus;
} NDIS_BPC_STATUS, *PNDIS_BPC_STATUS;

typedef struct NDIS_BPC_STATUS_CONNECTION {
    BPC_HANDLE nhConnection;
    BPC_HANDLE nhDevice;

} NDIS_BPC_STATUS_CONNECTED, *PNDIS_BPC_STATUS_CONNECTED;

#if __POCC__ >= 290
#pragma warn(pop)
#endif

#ifdef __cplusplus
}
#endif

#endif /* _NTDDNDIS_H */
