www.pudn.com > NetWolfSrc.zip > ntddndis.h


/*++ BUILD Version: 0001		// Increment this if a change has global effects 
 
Copyright (c) 1990-1999  Microsoft Corporation 
 
Module Name: 
 
	ntddndis.h 
 
Abstract: 
 
	This is the include file that defines all constants and types for 
	accessing the Network driver interface device. 
 
Author: 
 
	NDIS/ATM Development Team 
 
Revision History: 
 
	added the correct values for NDIS 3.0. 
	added Pnp IoCTLs and structures 
	added general co ndis oids. 
	added PnP and PM OIDs. 
 
--*/ 
 
#ifndef _NTDDNDIS_ 
#define _NTDDNDIS_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
// 
// Device Name - this string is the name of the device. It is the name 
// that should be passed to NtOpenFile when accessing the device. 
 
// 
// Note: For devices that support multiple units, it should be suffixed 
//		 with the Ascii representation of the unit number. 
// 
 
#define DD_NDIS_DEVICE_NAME "\\Device\\UNKNOWN" 
 
 
// 
// NtDeviceIoControlFile IoControlCode values for this device. 
// 
// Warning: Remember that the low two bits of the code specify how the 
//			buffers are passed to the driver! 
// 
 
#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) 
 
 
// 
// NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for 
// this device. 
// 
 
// 
// This is the type of an NDIS OID value. 
// 
 
typedef ULONG NDIS_OID, *PNDIS_OID; 
 
//################## add by LornWolf ####################### 
typedef long LONG_PTR, *PLONG_PTR; 
typedef unsigned long ULONG_PTR, *PULONG_PTR; 
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; 
//########################################################## 
 
// 
// IOCTL_NDIS_QUERY_ALL_STATS returns a sequence of these, packed 
// together.  This structure is unaligned because not all statistics 
// have a length that is a ULONG multiple. 
// 
 
typedef UNALIGNED struct _NDIS_STATISTICS_VALUE 
{ 
	NDIS_OID	Oid; 
	ULONG		DataLength; 
	UCHAR		Data[1];			// variable length 
} NDIS_STATISTICS_VALUE, *PNDIS_STATISTICS_VALUE; 
 
// 
// Structure used to define a self-contained variable data structure 
// 
typedef struct _NDIS_VAR_DATA_DESC 
{ 
	USHORT		Length;			// # of octects of data 
	USHORT		MaximumLength;	// # of octects available 
	ULONG_PTR	Offset;			// Offset of data relative to the descriptor 
} NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC; 
 
#ifndef GUID_DEFINED 
#include  
#endif // !GUID_DEFINED 
 
// 
// General Objects 
// 
 
// 
//	Required OIDs 
// 
#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	// Set only 
#define OID_GEN_TRANSPORT_HEADER_OFFSET			0x00010119  // Set only 
 
// 
//	Optional OIDs 
// 
#define	OID_GEN_MEDIA_CAPABILITIES				0x00010201 
#define OID_GEN_PHYSICAL_MEDIUM					0x00010202 
 
// 
//	Required statistics 
// 
#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 
 
// 
//	Optional statistics 
// 
#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 
 
// 
// The following is exported by NDIS itself and is only queryable. It returns 
// the time in milliseconds a driver took to initialize. 
// 
#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 
 
 
// 
//	These are connection-oriented general OIDs. 
//	These replace the above OIDs for connection-oriented media. 
// 
#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 
 
// 
//	These are connection-oriented statistics OIDs. 
// 
#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 
 
// 
// 802.3 Objects (Ethernet) 
// 
#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 
 
 
// 
// 802.5 Objects (Token-Ring) 
// 
#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 
 
 
// 
// FDDI Objects 
// 
#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 
 
// 
// WAN objects 
// 
#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 
 
// 
//	These are connection-oriented WAN OIDs. 
//	These replace the above OIDs for CoNDIS WAN Miniports 
// 
#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 
 
 
// 
// LocalTalk objects 
// 
#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 
 
// 
// Arcnet objects 
// 
#define OID_ARCNET_PERMANENT_ADDRESS			0x06010101 
#define OID_ARCNET_CURRENT_ADDRESS				0x06010102 
 
#define OID_ARCNET_RECONFIGURATIONS				0x06020201 
 
 
// 
// TAPI objects 
// 
#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 
 
// 
// ATM Connection Oriented OIDs 
// 
#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	// UNI 4.0 
#define OID_ATM_CALL_ALERTING					0x0801020C	// UNI 4.0 
#define OID_ATM_PARTY_ALERTING					0x0801020D	// UNI 4.0 
#define OID_ATM_CALL_NOTIFY						0x0801020E	// UNI 4.0 
 
#define OID_ATM_MY_IP_NM_ADDRESS				0x0801020F 
 
 
// 
//	ATM specific statistics OIDs. 
// 
#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 
 
// 
// PCCA (Wireless) object 
// 
 
// 
// All WirelessWAN devices must support the following OIDs 
// 
 
#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 
 
// 
// These are optional 
// 
#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 
 
// 
// Network Dependent OIDs - Mobitex: 
// 
 
#define OID_WW_MBX_SUBADDR						0x09050101 
// OID 0x09050102 is reserved and may not be used 
#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 
 
// 
// Network Dependent OIDs - Pinpoint: 
// 
// 
// The following Pin Point characteristics have been deprecated by the 
// PCCA and are considered reserved values. They are include here only for 
// historical purposes and should not be used 
// 
#define OID_WW_PIN_LOC_AUTHORIZE				0x09090101 
#define OID_WW_PIN_LAST_LOCATION				0x09090102 
#define OID_WW_PIN_LOC_FIX						0x09090103 
 
// 
// Network Dependent - CDPD: 
// 
#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 
 
// 
// At the request of the PCCA STD-201 Annex C working group the following OID 
// value has been superceeded by more specific objects. Its value is reserved by 
// the PCCA,is included here for historical purposes only, and should not be 
// used. 
// 
#define OID_WW_CDPD_CIRCUIT_SWITCHED			0x090D010E 
 
#define	OID_WW_CDPD_TEI							0x090D010F 
#define	OID_WW_CDPD_RSSI						0x090D0110 
 
// 
// CDPD Circuit Switched objects 
// 
#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 
 
// 
// Network Dependent - Ardis: 
// 
// 
// At the request of Ardis these OID value have been superceeded. Their 
// functionality has been merged with the DataTAC objects. Therefore 
// these values are reserved by the PCCA, are include here for 
// historical purposes only, and should not be used. 
// 
#define OID_WW_ARD_SNDCP						0x09110101 
#define OID_WW_ARD_TMLY_MSG						0x09110102 
#define OID_WW_ARD_DATAGRAM						0x09110103 
 
// 
// Network Dependent - DataTac: 
// 
 
#define OID_WW_TAC_COMPRESSION					0x09150101 
 
// 
// At the request of Motorola, the following two OID values have been 
// superceeded. Their functionality has been subsumed by other more specific 
// DataTac objects and should not be used. These values are reserved by the 
// PCCA and are include here only for historical purposes only. 
// 
#define OID_WW_TAC_SET_CONFIG					0x09150102 
#define OID_WW_TAC_GET_STATUS					0x09150103 
#define OID_WW_TAC_USER_HEADER					0x09150104 
 
// 
// DataTAC characteristic object values 
// 
#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 
 
// 
// DataTac statistic object value 
// 
#define OID_WW_TAC_STATISTICS					0x09160101 
 
// 
// Network Dependent - Metricom: 
// 
 
#define OID_WW_MET_FUNCTION						0x09190101 
 
// 
// IRDA objects 
// 
#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	// The range between OID_IRDA_RESERVED1 
#define OID_IRDA_RESERVED2						0x0A01020F	// and OID_IRDA_RESERVED2 is reserved 
 
// 
// BPC OIDs 
// 
#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 
 
// 
// IEEE1394 mandatory general OIDs. 
// 
#define OID_1394_LOCAL_NODE_INFO				0x0C010101 
#define OID_1394_VC_INFO						0x0C010102 
 
// 
// The following OIDs are not specific to a media. 
// 
 
// 
// These are objects for Connection-oriented media call-managers. 
// 
#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 
 
// 
// Objects for call-managers and MCMs that support TAPI access. 
// 
#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 
 
// 
//	PnP and PM OIDs 
// 
#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 
 
// 
//	PnP/PM Statistics (Optional). 
// 
#define	OID_PNP_WAKE_UP_OK						0xFD020200 
#define	OID_PNP_WAKE_UP_ERROR					0xFD020201 
 
// 
//	The following bits are defined for OID_PNP_ENABLE_WAKE_UP 
// 
#define	NDIS_PNP_WAKE_UP_MAGIC_PACKET			0x00000001 
#define	NDIS_PNP_WAKE_UP_PATTERN_MATCH			0x00000002 
#define	NDIS_PNP_WAKE_UP_LINK_CHANGE			0x00000004 
 
// 
//	TCP/IP OIDs 
// 
#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 
 
 
// 
//	Defines for FFP 
// 
#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 
 
// 
//	Defines for QOS 
// 
#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 
 
// 
// NDIS Proxy OID_GEN_CO_DEVICE_PROFILE structure. The optional OID and 
// this structure is a generic means of describing a CO device's 
// capabilites, and is used by the NDIS Proxy to construct a TAPI device 
// capabilities structure. 
// 
typedef struct NDIS_CO_DEVICE_PROFILE 
{ 
	NDIS_VAR_DATA_DESC	DeviceDescription;	// e.g. 'GigabitATMNet' 
	NDIS_VAR_DATA_DESC	DevSpecificInfo;	// special features 
 
	ULONG	ulTAPISupplementaryPassThru;// reserved in NT5 
	ULONG	ulAddressModes; 
	ULONG	ulNumAddresses; 
	ULONG	ulBearerModes; 
	ULONG	ulMaxTxRate; // bytes per second 
	ULONG	ulMinTxRate; // bytes per second 
	ULONG	ulMaxRxRate; // bytes per second 
	ULONG	ulMinRxRate; // bytes per second 
	ULONG	ulMediaModes;	 
 
	// 
	// Tone/digit generation and recognition capabilities 
	// 
	ULONG	ulGenerateToneModes; 
	ULONG	ulGenerateToneMaxNumFreq; 
	ULONG	ulGenerateDigitModes; 
	ULONG	ulMonitorToneMaxNumFreq; 
	ULONG	ulMonitorToneMaxNumEntries; 
	ULONG	ulMonitorDigitModes; 
	ULONG	ulGatherDigitsMinTimeout;// milliseconds 
	ULONG	ulGatherDigitsMaxTimeout;// milliseconds 
 
	ULONG	ulDevCapFlags;			// Misc. capabilities 
	ULONG	ulMaxNumActiveCalls;	// (This * ulMinRate) = total bandwidth (which may equal ulMaxRate) 
	ULONG	ulAnswerMode;			// Effect of answering a new call when an 
									// existing call is non-idle 
	// 
	// User-User info sizes allowed to accompany each operation 
	// 
	ULONG	ulUUIAcceptSize;	// bytes 
	ULONG	ulUUIAnswerSize;	// bytes 
	ULONG	ulUUIMakeCallSize;	// bytes 
	ULONG	ulUUIDropSize;		// bytes 
	ULONG	ulUUISendUserUserInfoSize; // bytes 
	ULONG	ulUUICallInfoSize;	// bytes 
 
} NDIS_CO_DEVICE_PROFILE, *PNDIS_CO_DEVICE_PROFILE; 
 
// 
//	Structures for TCP IPSec. 
// 
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; 
 
#define OFFLOAD_MAX_SAS				3 
 
#define OFFLOAD_INBOUND_SA			0x0001 
#define OFFLOAD_OUTBOUND_SA			0x0002 
 
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; 
 
// 
// Medium the Ndis Driver is running on (OID_GEN_MEDIA_SUPPORTED/ OID_GEN_MEDIA_IN_USE). 
// 
typedef enum _NDIS_MEDIUM 
{ 
	NdisMedium802_3, 
	NdisMedium802_5, 
	NdisMediumFddi, 
	NdisMediumWan, 
	NdisMediumLocalTalk, 
	NdisMediumDix,				// defined for convenience, not a real medium 
	NdisMediumArcnetRaw, 
	NdisMediumArcnet878_2, 
	NdisMediumAtm, 
	NdisMediumWirelessWan, 
	NdisMediumIrda, 
	NdisMediumBpc, 
	NdisMediumCoWan, 
	NdisMedium1394, 
	NdisMediumMax				// Not a real medium, defined as an upper-bound 
} NDIS_MEDIUM, *PNDIS_MEDIUM; 
 
 
// 
// Physical Medium Type definitions. Used with OID_GEN_PHYSICAL_MEDIUM. 
// 
typedef enum _NDIS_PHYSICAL_MEDIUM 
{ 
	NdisPhysicalMediumReserved0, 
	NdisPhysicalMediumWirelessLan, 
	NdisPhysicalMediumCableModem, 
	NdisPhysicalMediumPhoneLine, 
	NdisPhysicalMediumPowerLine, 
	NdisPhysicalMediumDSL,		// includes ADSL and UADSL (G.Lite) 
	NdisPhysicalMediumMax		// Not a real physical type, defined as an upper-bound 
} NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM; 
 
 
// 
//	Protocol types supported by ndis. These values need to be consistent with ADDRESS_TYPE_XXX defined in TDI.H 
// 
#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 
 
// 
// The following is used with OID_GEN_TRANSPORT_HEADER_OFFSET to indicate the length of the layer-2 header 
// for packets sent by a particular protocol. 
// 
typedef struct _TRANSPORT_HEADER_OFFSET 
{ 
	USHORT		ProtocolType;		// The protocol that is sending this OID (NDIS_PROTOCOL_ID_XXX above) 
	USHORT		HeaderOffset;		// The header offset 
} TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET; 
 
 
// 
// The structures below need to be consistent with TRANSPORT_ADDRESS structures in TDI.H 
// 
typedef struct _NETWORK_ADDRESS 
{ 
	USHORT		AddressLength;		// length in bytes of Address[] in this 
	USHORT		AddressType;		// type of this address (NDIS_PROTOCOL_ID_XXX above) 
	UCHAR		Address[1];			// actually AddressLength bytes long 
} NETWORK_ADDRESS, *PNETWORK_ADDRESS; 
 
// 
// The following is used with OID_GEN_NETWORK_LAYER_ADDRESSES to set network layer addresses on an interface 
// 
typedef struct _NETWORK_ADDRESS_LIST 
{ 
	LONG		AddressCount;		// number of addresses following 
	USHORT		AddressType;		// type of this address (NDIS_PROTOCOL_ID_XXX above) 
	NETWORK_ADDRESS Address[1];		// actually AddressCount elements long 
} NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST; 
 
// 
// IP address - This must remain consistent with TDI_ADDRESS_IP in tdi.h 
// 
typedef struct _NETWORK_ADDRESS_IP 
{ 
	USHORT		sin_port; 
	ULONG		in_addr; 
	UCHAR		sin_zero[8]; 
} NETWORK_ADDRESS_IP, *PNETWORK_ADDRESS_IP; 
 
#define NETWORK_ADDRESS_LENGTH_IP sizeof (NETWORK_ADDRESS_IP) 
 
// 
// IPX address - This must remain consistent with TDI_ADDRESS_IPX in tdi.h. 
// 
typedef struct _NETWORK_ADDRESS_IPX 
{ 
	ULONG		NetworkAddress; 
	UCHAR		NodeAddress[6]; 
	USHORT		Socket; 
} NETWORK_ADDRESS_IPX, *PNETWORK_ADDRESS_IPX; 
 
#define NETWORK_ADDRESS_LENGTH_IPX sizeof (NETWORK_ADDRESS_IPX) 
 
// 
// Hardware status codes (OID_GEN_HARDWARE_STATUS). 
// 
 
typedef enum _NDIS_HARDWARE_STATUS 
{ 
	NdisHardwareStatusReady, 
	NdisHardwareStatusInitializing, 
	NdisHardwareStatusReset, 
	NdisHardwareStatusClosing, 
	NdisHardwareStatusNotReady 
} NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS; 
 
 
// 
// this is the type passed in the OID_GEN_GET_TIME_CAPS request 
// 
typedef struct _GEN_GET_TIME_CAPS 
{ 
	ULONG						Flags;	// Bits defined below 
	ULONG						ClockPrecision; 
} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS; 
 
#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 
 
// 
// this is the type passed in the OID_GEN_GET_NETCARD_TIME request 
// 
typedef struct _GEN_GET_NETCARD_TIME 
{ 
	ULONGLONG					ReadTime; 
} GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME; 
 
// 
//	NDIS PnP routines and definitions. 
// 
typedef struct _NDIS_PM_PACKET_PATTERN 
{ 
	ULONG	Priority;					// Importance of the given pattern. 
	ULONG	Reserved;					// Context information for transports. 
	ULONG	MaskSize;					// Size in bytes of the pattern mask. 
	ULONG	PatternOffset;				// Offset from beginning of this 
										// structure to the pattern bytes. 
	ULONG	PatternSize;				// Size in bytes of the pattern. 
	ULONG	PatternFlags;				// Flags (TBD). 
} NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN; 
 
 
// 
//	The following structure defines the device power states. 
// 
typedef enum _NDIS_DEVICE_POWER_STATE 
{ 
	NdisDeviceStateUnspecified = 0, 
	NdisDeviceStateD0, 
	NdisDeviceStateD1, 
	NdisDeviceStateD2, 
	NdisDeviceStateD3, 
	NdisDeviceStateMaximum 
} NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE; 
 
// 
//	The following structure defines the wake-up capabilities of the device. 
// 
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; 
 
// 
// the following flags define the -enabled- wake-up capabilities of the device 
// passed in the Flags field of NDIS_PNP_CAPABILITIES structure 
// 
#define NDIS_DEVICE_WAKE_UP_ENABLE							0x00000001 
#define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE			0x00000002 
#define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE				0x00000004 
 
 
// 
//	This structure defines general PnP capabilities of the miniport driver. 
// 
typedef struct _NDIS_PNP_CAPABILITIES 
{ 
	ULONG							Flags; 
	NDIS_PM_WAKE_UP_CAPABILITIES	WakeUpCapabilities; 
} NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES; 
 
// 
// Defines the attachment types for FDDI (OID_FDDI_ATTACHMENT_TYPE). 
// 
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; 
 
 
// 
// Defines the ring management states for FDDI (OID_FDDI_RING_MGT_STATE). 
// 
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; 
 
 
// 
// Defines the Lconnection state for FDDI (OID_FDDI_LCONNECTION_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; 
 
 
// 
// Defines the medium subtypes for WAN medium (OID_WAN_MEDIUM_SUBTYPE). 
// Sub-medium used only by connection-oriented WAN devices 
// i.e. NdisMediumWan, NdisMediumCoWan. 
// 
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; 
 
 
// 
// Defines the header format for WAN medium (OID_WAN_HEADER_FORMAT). 
// 
typedef enum _NDIS_WAN_HEADER_FORMAT 
{ 
	NdisWanHeaderNative,		// src/dest based on subtype, followed by NLPID 
	NdisWanHeaderEthernet		// emulation of ethernet header 
} NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT; 
 
 
// 
// Defines the line quality on a WAN line (OID_WAN_QUALITY_OF_SERVICE). 
// 
typedef enum _NDIS_WAN_QUALITY 
{ 
	NdisWanRaw, 
	NdisWanErrorControl, 
	NdisWanReliable 
} NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY; 
 
 
// 
// Defines a protocol's WAN specific capabilities (OID_WAN_PROTOCOL_CAPS). 
// 
typedef struct _NDIS_WAN_PROTOCOL_CAPS 
{ 
	IN	ULONG	Flags; 
	IN	ULONG	Reserved; 
} NDIS_WAN_PROTOCOL_CAPS, *PNDIS_WAN_PROTOCOL_CAPS; 
 
 
// 
// Flags used in NDIS_WAN_PROTOCOL_CAPS 
// 
#define WAN_PROTOCOL_KEEPS_STATS	0x00000001 
 
 
// 
// Defines the state of a token-ring adapter (OID_802_5_CURRENT_RING_STATE). 
// 
typedef enum _NDIS_802_5_RING_STATE 
{ 
	NdisRingStateOpened = 1, 
	NdisRingStateClosed, 
	NdisRingStateOpening, 
	NdisRingStateClosing, 
	NdisRingStateOpenFailure, 
	NdisRingStateRingFailure 
} NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE; 
 
// 
// Defines the state of the LAN media 
// 
typedef enum _NDIS_MEDIA_STATE 
{ 
	NdisMediaStateConnected, 
	NdisMediaStateDisconnected 
} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE; 
 
// 
// The following is set on a per-packet basis as OOB data with NdisClass802_3Priority 
// 
typedef	ULONG	Priority_802_3;			// 0-7 priority levels 
 
// 
//	The following structure is used to query OID_GEN_CO_LINK_SPEED and 
//	OID_GEN_CO_MINIMUM_LINK_SPEED. The first OID will return the current 
//	link speed of the adapter. The second will return the minimum link speed 
//	the adapter is capable of. 
// 
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 
 
// 
//	Structure to be used for OID_GEN_SUPPORTED_GUIDS. 
//	This structure describes an OID to GUID mapping. 
//	Or a Status to GUID mapping. 
//	When ndis receives a request for a give GUID it will 
//	query the miniport with the supplied OID. 
// 
typedef struct _NDIS_GUID 
{ 
	GUID			Guid; 
	union 
	{ 
		NDIS_OID	Oid; 
		NDIS_STATUS	Status; 
	}; 
	ULONG		Size;				//	Size of the data element. If the GUID 
									//	represents an array then this is the 
									//	size of an element in the array. 
									//	This is -1 for strings. 
	ULONG		Flags; 
} NDIS_GUID, *PNDIS_GUID; 
 
#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 
 
// 
// Ndis Packet Filter Bits (OID_GEN_CURRENT_PACKET_FILTER). 
// 
#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 
 
 
// 
// Ndis Token-Ring Ring Status Codes (OID_802_5_CURRENT_RING_STATUS). 
// 
#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 
 
 
// 
// Ndis protocol option bits (OID_GEN_PROTOCOL_OPTIONS). 
// 
#define NDIS_PROT_OPTION_ESTIMATED_LENGTH		0x00000001 
#define NDIS_PROT_OPTION_NO_LOOPBACK			0x00000002 
#define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT		0x00000004 
 
// 
// Ndis MAC option bits (OID_GEN_MAC_OPTIONS). 
// 
#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 
 
// 
//	NDIS media capabilities bits (OID_GEN_MEDIA_CAPABILITIES). 
// 
#define NDIS_MEDIA_CAP_TRANSMIT					0x00000001	// Supports sending data 
#define NDIS_MEDIA_CAP_RECEIVE					0x00000002	// Supports receiving data 
 
// 
//	NDIS MAC option bits for OID_GEN_CO_MAC_OPTIONS. 
// 
#define	NDIS_CO_MAC_OPTION_DYNAMIC_LINK_SPEED	0x00000001 
 
#ifdef	IRDA 
 
// 
// The following is set on a per-packet basis as OOB data with NdisClassIrdaPacketInfo 
// This is the per-packet info specified on a per-packet basis 
// 
typedef	struct _NDIS_IRDA_PACKET_INFO 
{ 
	ULONG						ExtraBOFs; 
	ULONG						MinTurnAroundTime; 
} NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO; 
 
#endif 
 
#ifdef WIRELESS_WAN 
 
// 
// Wireless WAN structure definitions 
// 
// 
// currently defined Wireless network subtypes 
// 
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; 
 
// 
// currently defined header formats 
// 
typedef enum _NDIS_WW_HEADER_FORMAT 
{ 
	NdisWWDIXEthernetFrames, 
	NdisWWMPAKFrames, 
	NdisWWRDLAPFrames, 
	NdisWWMDC4800Frames, 
	NdisWWNCLFrames 
} NDIS_WW_HEADER_FORMAT; 
 
// 
// currently defined encryption types 
// 
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; 
 
 
// 
// OID_WW_GEN_INDICATION_REQUEST 
// 
typedef struct _NDIS_WW_INDICATION_REQUEST 
{ 
	NDIS_OID			Oid;					// IN 
	ULONG				uIndicationFlag;		// IN 
	ULONG				uApplicationToken;		// IN OUT 
	HANDLE				hIndicationHandle;		// IN OUT 
	INT					iPollingInterval;		// IN OUT 
	NDIS_VAR_DATA_DESC	InitialValue;			// IN OUT 
	NDIS_VAR_DATA_DESC	OIDIndicationValue;		// OUT - only valid after indication 
	NDIS_VAR_DATA_DESC	TriggerValue;			// IN 
} NDIS_WW_INDICATION_REQUEST, *PNDIS_WW_INDICATION_REQUEST; 
 
#define OID_INDICATION_REQUEST_ENABLE			0x0000 
#define OID_INDICATION_REQUEST_CANCEL			0x0001 
 
// 
// OID_WW_GEN_DEVICE_INFO 
// 
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; 
 
// 
// OID_WW_GEN_OPERATION_MODE 
// 
typedef INT WW_OPERATION_MODE;					//  0 = Normal mode 
												//  1 = Power saving mode 
												// -1 = mode unknown 
 
// 
// OID_WW_GEN_LOCK_STATUS 
// 
typedef INT WW_LOCK_STATUS;						//  0 = unlocked 
												//  1 = locked 
												// -1 = unknown lock status 
 
// 
// OID_WW_GEN_DISABLE_TRANSMITTER 
// 
typedef INT WW_DISABLE_TRANSMITTER;				//  0 = transmitter enabled 
												//  1 = transmitter disabled 
												// -1 = unknown value 
 
// 
// OID_WW_GEN_NETWORK_ID 
// 
typedef NDIS_VAR_DATA_DESC	WW_NETWORK_ID; 
 
// 
// OID_WW_GEN_PERMANENT_ADDRESS	 
// 
typedef NDIS_VAR_DATA_DESC	WW_PERMANENT_ADDRESS; 
 
// 
// OID_WW_GEN_CURRENT_ADDRESS	 
// 
typedef struct _WW_CURRENT_ADDRESS 
{ 
	NDIS_WW_HEADER_FORMAT	Format; 
	NDIS_VAR_DATA_DESC		Address; 
} WW_CURRENT_ADDRESS, *PWW_CURRENT_ADDRESS; 
 
// 
// OID_WW_GEN_SUSPEND_DRIVER 
// 
typedef BOOLEAN WW_SUSPEND_DRIVER;				// 0 = driver operational 
												// 1 = driver suspended 
// 
// OID_WW_GEN_BASESTATION_ID 
// 
typedef NDIS_VAR_DATA_DESC	WW_BASESTATION_ID; 
 
// 
// OID_WW_GEN_CHANNEL_ID 
// 
typedef NDIS_VAR_DATA_DESC	WW_CHANNEL_ID; 
 
// 
// OID_WW_GEN_ENCRYPTION_STATE 
// 
typedef BOOLEAN	WW_ENCRYPTION_STATE;			// 0 = if encryption is disabled 
												// 1 = if encryption is enabled 
 
// 
// OID_WW_GEN_CHANNEL_QUALITY 
// 
typedef INT		WW_CHANNEL_QUALITY;				//  0 = Not in network contact, 
												// 1-100 = Quality of Channel (100 is highest quality). 
												// -1 = channel quality is unknown 
 
// 
// OID_WW_GEN_REGISTRATION_STATUS 
// 
typedef INT		WW_REGISTRATION_STATUS;			//  0 = Registration denied 
												//  1 = Registration pending 
												//  2 = Registered 
												// -1 = unknown registration status 
 
// 
// OID_WW_GEN_RADIO_LINK_SPEED 
// 
typedef ULONG	WW_RADIO_LINK_SPEED;			// Bits per second. 
 
// 
// OID_WW_GEN_LATENCY 
// 
typedef ULONG	WW_LATENCY;						//  milliseconds 
 
// 
// OID_WW_GEN_BATTERY_LEVEL 
// 
typedef INT		WW_BATTERY_LEVEL;				//  0-100 = battery level in percentage 
												//	(100=fully charged) 
												// -1 = unknown battery level. 
 
// 
// OID_WW_GEN_EXTERNAL_POWER 
// 
typedef INT		WW_EXTERNAL_POWER;				//	0 = no external power connected 
												//	1 = external power connected 
												//  -1 = unknown 
 
// 
// Ping Address structure 
// 
typedef struct _WW_PING_ADDRESS 
{ 
	WW_ADDRESS_FORMAT	Format;					// IN 
	NDIS_VAR_DATA_DESC	TargetAddress;			// IN 
	UINT				uTime;					// OUT in milleseconds 
} WW_PING_ADDRESS; 
 
 
// 
// RSSI structure 
// 
typedef struct _WW_RECEIVE_SIGNAL_STRENGTH_INDICATOR 
{ 
	INT					iDecibels;				// value in DB 
	INT					iFactor;				// power of 10 
} WW_RECEIVE_SIGNAL_STRENGTH_INDICATOR; 
 
 
// 
// SIM status structure 
// 
typedef struct _WW_SIM_STATUS 
{ 
	BOOLEAN				bHasSIM;				// TRUE = SIM required 
	BOOLEAN 			bBlocked;				// TRUE = SIM PIN access blocked 
	BOOLEAN 			bLocked;				// TRUE = PIN need to access device 
	BOOLEAN 			bInitialized;			// TRUE = SIM initialized 
	UINT				uCountdown;				// = remaining number of attempt to 
												// enter correct PIN 
} WW_SIM_STATUS; 
 
// 
// enable SIM PIN structure 
// 
typedef struct _WW_ENABLE_SIM_PIN 
{ 
	BOOLEAN				bEnabled;				// TRUE = security feature of SIM enabled 
	NDIS_VAR_DATA_DESC	CurrentPIN;				// describes buffer containing PIN value 
} WW_ENABLE_SIM_PIN; 
 
// 
// SIM PIN structure 
// 
typedef struct _WW_CHANGE_SIM_PIN 
{ 
	NDIS_VAR_DATA_DESC	OldPIN;					// describes buffer containing OLD PIN 
	NDIS_VAR_DATA_DESC	NewPIN;					// describes buffer containing new PIN 
} WW_CHANGE_SIM_PIN; 
 
 
// 
// new change SIM PUK structure 
// 
typedef NDIS_VAR_DATA_DESC		WW_ENABLE_SIM_PUK; 
 
 
// 
// OID_WW_MET_FUNCTION 
// 
typedef NDIS_VAR_DATA_DESC		WW_MET_FUNCTION; 
 
// 
// OID_WW_TAC_COMPRESSION 
// 
typedef BOOLEAN	WW_TAC_COMPRESSION;				// Determines whether or not network level compression 
												// is being used. 
 
// 
// OID_WW_TAC_SET_CONFIG 
// 
// The DataTAC OID that referenced this object has been superceeded. The 
// definition is still included for historical purposes only and should not 
// be used 
// 
typedef struct _WW_TAC_SETCONFIG 
{ 
	NDIS_VAR_DATA_DESC	RCV_MODE;				// Select confirmed/unconfirmed 
												// receive mode 
	NDIS_VAR_DATA_DESC	TX_CONTROL;				// Enable or Disable transmitter 
	NDIS_VAR_DATA_DESC	RX_CONTROL;				// Enable or disable radio in 
												// the modem 
	NDIS_VAR_DATA_DESC	FLOW_CONTROL;			// Set flow control between DTE 
												// and DCE 
	NDIS_VAR_DATA_DESC	RESET_CNF;				// Reset configuration to 
												// default 
	NDIS_VAR_DATA_DESC	READ_CNF;				// Read the current 
												// configuration 
} WW_TAC_SETCONFIG, *PWW_TAC_SETCONFIG; 
 
// 
// OID_WW_TAC_GET_STATUS 
// 
// The DataTAC OID that referenced this object has been superceeded. The 
// definition is still included for historical purposes only and should not 
// be used 
// 
typedef struct _WW_TAC_GETSTATUS 
{ 
	BOOLEAN					Action;				// Set = Execute command. 
	NDIS_VAR_DATA_DESC		Command; 
	NDIS_VAR_DATA_DESC		Option; 
	NDIS_VAR_DATA_DESC		Response;			// The response to the requested command 
												// - max. length of string is 256 octets. 
} WW_TAC_GETSTATUS, *PWW_TAC_GETSTATUS; 
 
// 
// OID_WW_TAC_USER_HEADER 
// 
typedef NDIS_VAR_DATA_DESC	WW_TAC_USERHEADER;	// This will hold the user header - Max. 64 octets. 
 
// August 25, 1998 @14:16 EDT by Emil Sturniolo - WRQ 
// added new DataTAC get response structure 
typedef  struct _WW_TAC_GET_RESPONSE 
{ 
	UINT				SDUTag;					// previousl assigned token 
	NDIS_VAR_DATA_DESC	Response;				// response - max 2048 octets 
} WW_TAC_GET_RESPONSE; 
 
// 
// DataTAC disable receiver structure 
// 
typedef INT WW_TAC_DISABLE_RECEIVER;			// 0 = receiver enabled 
												// 1 = receiver disabled 
												// -1 = state of recevier unknown 
 
// 
// DataTAC antenna mode structure 
// 
typedef INT WW_TAC_ANTENNA_MODE;				// 0 = Automatic Antenna selection 
												// 1 = Always use primary antenna 
												// 2 = Always use secondary antenna 
												// -1 = Antenna algorithm unknown 
 
// 
// DataTAC get response structure 
// 
typedef INT WW_TAC_FLUSH_DATA;					// 1 = flush buffered data destine to net 
												// 2 = flush buffered data received from net 
												// 3 = flush all buffered data 
 
// 
// DataTAC shutdown device structure 
// 
typedef INT	WW_TAC_SHUTDOWN_DEVICE;				// 0 = device enabled 
												// 1 = device disabled 
												// -1 = state of device unknown 
 
// 
// DataTAC transmitter keyed structure 
// 
typedef BOOLEAN WW_TAC_TRANSMITTER_KEYED; 
 
// 
// added new DataTAC system table structure 
// 
typedef struct _WW_TAC_SYSTEM_TABLE 
{ 
	UINT		SystemCount; 
	UCHAR		ContryTable[32]; 
	UCHAR		PrefixTable[32]; 
	UCHAR		IDTable[32]; 
} WW_TAC_SYSTEM_TABLE; 
 
// 
// added new DataTAC channel table structure 
// 
typedef struct _WW_TAC_CHANNEL_TABLE 
{ 
	UINT		ChannelCount; 
	UCHAR		ChannelTable[64]; 
	UCHAR		AttrTable[64]; 
} WW_TAC_CHANNEL_TABLE; 
 
 
// 
// added new DataTAC statistics structure 
// 
typedef NDIS_VAR_DATA_DESC WW_TAC_STATISTICS; 
 
 
 
// 
// OID_WW_ARD_SNDCP 
// 
// The ARDIS OIDs that referenced these object have been deprecated and merged 
// with the new DataTAC objects. Their definition are still included for 
// historical purposes only and should not be used. 
// 
typedef struct _WW_ARD_SNDCP 
{ 
	NDIS_VAR_DATA_DESC	Version;				// The version of SNDCP protocol supported. 
	INT					BlockSize;				// The block size used for SNDCP 
	INT					Window;					// The window size used in SNDCP 
} WW_ARD_SNDCP, *PWW_ARD_SNDCP; 
 
// 
// OID_WW_ARD_TMLY_MSG 
// 
typedef BOOLEAN	WW_ARD_CHANNEL_STATUS;			// The current status of the inbound RF Channel. 
 
// 
// OID_WW_ARD_DATAGRAM 
// 
typedef struct _WW_ARD_DATAGRAM 
{ 
	BOOLEAN				LoadLevel;				// Byte that contains the load level info. 
	INT					SessionTime;			// Datagram session time remaining. 
	NDIS_VAR_DATA_DESC	HostAddr;				// Host address. 
	NDIS_VAR_DATA_DESC	THostAddr;				// Test host address. 
} WW_ARD_DATAGRAM, *PWW_ARD_DATAGRAM; 
 
// 
// OID_WW_CDPD_SPNI 
// 
typedef struct _WW_CDPD_SPNI 
{ 
	ULONG	SPNI[10];							//10 16-bit service provider network IDs 
	INT		OperatingMode;						// 0 = ignore SPNI, 
												// 1 = require SPNI from list, 
												// 2 = prefer SPNI from list. 
												// 3 = exclude SPNI from list. 
} WW_CDPD_SPNI, *PWW_CDPD_SPNI; 
 
// 
// OID_WW_CDPD_WASI 
// 
typedef struct _WW_CDPD_WIDE_AREA_SERVICE_ID 
{ 
	ULONG	WASI[10];							//10 16-bit wide area service IDs 
	INT		OperatingMode;						// 0 = ignore WASI, 
												// 1 = Require WASI from list, 
												// 2 = prefer WASI from list 
												// 3 = exclude WASI from list. 
} WW_CDPD_WIDE_AREA_SERVICE_ID, *PWW_CDPD_WIDE_AREA_SERVICE_ID; 
 
// 
// OID_WW_CDPD_AREA_COLOR 
// 
typedef INT		WW_CDPD_AREA_COLOR; 
 
// 
// OID_WW_CDPD_TX_POWER_LEVEL 
// 
typedef ULONG	WW_CDPD_TX_POWER_LEVEL; 
 
// 
// OID_WW_CDPD_EID 
// 
typedef NDIS_VAR_DATA_DESC	WW_CDPD_EID; 
// 
// OID_WW_CDPD_HEADER_COMPRESSION 
// 
typedef INT	WW_CDPD_HEADER_COMPRESSION;			//  0 = no header compression, 
												//  1 = always compress headers, 
												//  2 = compress headers if MD-IS does 
												// -1 = unknown 
 
// 
// OID_WW_CDPD_DATA_COMPRESSION 
// 
typedef INT	WW_CDPD_DATA_COMPRESSION;			// 0  = no data compression, 
												// 1  = data compression enabled 
												// -1 = unknown 
 
// 
// OID_WW_CDPD_CHANNEL_SELECT 
// 
typedef struct _WW_CDPD_CHANNEL_SELECT 
{ 
	ULONG	ChannelID;							// channel number 
	ULONG	fixedDuration;						// duration in seconds 
} WW_CDPD_CHANNEL_SELECT, *PWW_CDPD_CHANNEL_SELECT; 
 
// 
// OID_WW_CDPD_CHANNEL_STATE 
// 
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; 
 
// 
// OID_WW_CDPD_NEI 
// 
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;				// group member identifier, only 
												// meaningful if NeiType == 
												// CDPDNeiMulticast 
	NDIS_VAR_DATA_DESC	NeiAddress; 
} WW_CDPD_NEI; 
 
// 
// OID_WW_CDPD_NEI_STATE 
// 
 
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,								// Registration pending 
	CDPDNoReason,								// Registration denied - no reason given 
	CDPDMDISNotCapable,							// Registration denied - MD-IS not capable of 
												//  handling M-ES at this time 
	CDPDNEINotAuthorized,						// Registration denied - NEI is not authorized to 
												//  use this subnetwork 
	CDPDInsufficientAuth,						// Registration denied - M-ES gave insufficient 
												//  authentication credentials 
	CDPDUnsupportedAuth,						// Registration denied - M-ES gave unsupported 
												//  authentication credentials 
	CDPDUsageExceeded,							// Registration denied - NEI has exceeded usage 
												//  limitations 
	CDPDDeniedThisNetwork						// Registration denied on this network, service 
												//  may be obtained on alternate Service Provider 
												//  network 
} 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; 
 
// 
// OID_WW_CDPD_SERVICE_PROVIDER_IDENTIFIER 
// 
typedef struct _WW_CDPD_SERVICE_PROVIDER_ID 
{ 
	ULONG	SPI[10];							//10 16-bit service provider IDs 
	INT		OperatingMode;						// 0 = ignore SPI, 
												// 1 = require SPI from list, 
												// 2 = prefer SPI from list. 
												// 3 = SPI from list is excluded 
} WW_CDPD_SERVICE_PROVIDER_ID, *PWW_CDPD_SERVICE_PROVIDER_ID; 
 
// 
// OID_WW_CDPD_SLEEP_MODE 
// 
typedef INT WW_CDPD_SLEEP_MODE; 
 
// 
// OID_WW_CDPD_TEI 
// 
typedef ULONG	WW_CDPD_TEI; 
 
// 
// OID_WW_CDPD_CIRCUIT_SWITCHED 
// 
// The CDPD OID that referenced this object has been deprecated and superceeded 
// by new discrete CDPD objects. The definition is still included for 
// historical purposes only and should not be used. 
// 
typedef struct _WW_CDPD_CIRCUIT_SWITCHED 
{ 
	INT					service_preference;	 // -1 = unknown, 
												//  0 = always use packet switched CDPD, 
												//  1 = always use CS CDPD via AMPS, 
												//  2 = always use CS CDPD via PSTN, 
												//  3 = use circuit switched via AMPS only 
												//	when packet switched is not available. 
												//  4 = use packet switched only when circuit 
												//	switched via AMPS is not available. 
												//  5 = device manuf. defined service 
												//	preference. 
												//  6 = device manuf. defined service 
												//	preference. 
	 
	INT					service_status;			// -1 = unknown, 
												//  0 = packet switched CDPD, 
												//  1 = circuit switched CDPD via AMPS, 
												//  2 = circuit switched CDPD via PSTN. 
	 
	INT					connect_rate;			//  CS connection bit rate (bits per second). 
												//  0 = no active connection, 
												// -1 = unknown 
 
												//  Dial code last used to dial. 
	NDIS_VAR_DATA_DESC	dial_code[20]; 
	 
	ULONG				sid;					//  Current AMPS system ID 
	 
	INT					a_b_side_selection;		// -1 = unknown, 
												//  0 = no AMPS service 
												//  1 = AMPS "A" side channels selected 
												//  2 = AMPS "B" side channels selected 
	 
	INT					AMPS_channel;			// -1= unknown 
												//  0 = no AMPS service. 
												//  1-1023 = AMPS channel number in use 
	 
	ULONG				action;					//  0 = no action 
												//  1 = suspend (hangup) 
												//  2 = dial 
	 
												//  Default dial code for CS CDPD service 
												//  encoded as specified in the CS CDPD 
												//  implementor guidelines. 
	NDIS_VAR_DATA_DESC	default_dial[20]; 
	 
												//  Number for the CS CDPD network to call 
												//	back the mobile, encoded as specified in 
												//	the CS CDPD implementor guidelines. 
	NDIS_VAR_DATA_DESC	call_back[20]; 
	 
	ULONG				sid_list[10];			//  List of 10 16-bit preferred AMPS 
												//	system IDs for CS CDPD. 
	 
	ULONG				inactivity_timer;		//  Wait time after last data before dropping 
												//	call. 
												//  0-65535 = inactivity time limit (seconds). 
	 
	ULONG				receive_timer;			//  secs. per CS-CDPD Implementor Guidelines. 
	 
	ULONG				conn_resp_timer;		//  secs. per CS-CDPD Implementor Guidelines. 
	 
	ULONG				reconn_resp_timer;		//  secs. per CS-CDPD Implementor Guidelines. 
	 
	ULONG				disconn_timer;			//  secs. per CS-CDPD Implementor Guidelines. 
	 
	ULONG				NEI_reg_timer;			//  secs. per CS-CDPD Implementor Guidelines. 
	 
	ULONG				reconn_retry_timer;		//  secs. per CS-CDPD Implementor Guidelines. 
	 
	ULONG				link_reset_timer;		//  secs. per CS-CDPD Implementor Guidelines. 
	 
	ULONG				link_reset_ack_timer;	//  secs. per CS-CDPD Implementor Guidelines. 
	 
	ULONG				n401_retry_limit;		//  per CS-CDPD Implementor Guidelines. 
	 
	ULONG				n402_retry_limit;		//  per CS-CDPD Implementor Guidelines. 
	 
	ULONG				n404_retry_limit;		//  per CS-CDPD Implementor Guidelines. 
	 
	ULONG				n405_retry_limit;		//  per CS-CDPD Implementor Guidelines. 
} WW_CDPD_CIRCUIT_SWITCHED, *WW_PCDPD_CIRCUIT_SWITCHED; 
 
typedef	ULONG	WW_CDPD_RSSI; 
 
// 
// cs-cdpd service preference structure 
// 
typedef INT	WW_CDPD_CS_SERVICE_PREFERENCE;		// 0 = use packet switched CDPD only 
												// 1 = use CS-CDPD via AMPS only 
												// 2 = use CS-CDPD via PSTN only 
												// 3 = use CS-CDPD via AMPS only 
												//     when packet switched is N/A 
												// 4 = use packet switched CDPD only 
												//     when  CS-CDPD via AMPS is N/A 
												// 5 = Device manufacture defined 
												//     service preference 
												// 6 = device manufacture defined 
												//     service preference 
												// -1 = unknown 
 
// 
// cs-cdpd service status structure 
// 
typedef INT WW_CDPD_CS_SERVICE_STATUS;			// 0 = Packet switched CDPD 
												// 1 = CS-CDPD via AMPS 
												// 2 = CS-CDPD via PSTN 
												// -1 = unknown 
 
 
 
// 
// cs-cdpd info structure 
// 
typedef struct _WW_CDPD_CS_INFO { 
	INT					ConnectRage;			// 0 = no active connection 
												// -1 = unknown 
												// all other values represent BPS 
	NDIS_VAR_DATA_DESC	DialCode;				// describes buffer of last dial code 
	UINT				SID;					// Current AMPS System ID 
	INT					ABSideSelection;		// 0 = no AMPS service 
												// 1 = AMPS "A" side channel selected 
												// 2 = AMPS "B" side channel selected 
	INT					AMPSChannel;			// 0 = no AMPS service 
												// 1-1023 = current AMPS channel 
												// -1 = Unknown 
												// all other values reserved 
} WW_CDPD_CS_INFO; 
 
 
 
// 
// cs-cdpd suspend structure 
// 
typedef UINT WW_CDPD_CS_SUSPEND;				// 0 = nop; 1 = hang up 
 
 
// 
// cs-cdpd default dial code structure 
// 
typedef NDIS_VAR_DATA_DESC WW_CDPD_DEFAULT_DIAL_CODE;	// max 20 octets 
 
// 
// cs-cdpd callback structure 
// 
typedef struct _WW_CDPD_CS_CALLBACK 
{ 
	UINT				Enabled;				// 0 = disable; 1 = enable; -1 = unknown 
	NDIS_VAR_DATA_DESC	Number;					// descibes buffer contianing dial code 
												// max 20 octets 
} WW_CDPD_CS_CALLBACK; 
 
 
// 
// cs-cdpd system id list structure 
// 
typedef struct _WW_CDPD_CS_SID_LIST 
{ 
	UINT	AMPSystemId[10]; 
} WW_CDPD_CS_SID_LIST; 
 
// 
// cs-cdpd configuration structure 
// 
typedef struct _WW_CDPD_CS_CONFIGURATION 
{ 
	UINT	InactivityTimer;					// in seconds 
	UINT	ReceiveTimer;						// in seconds 
	UINT	ConnResTimer;						// in seconds 
	UINT	ReconnRespTimer;					// in seconds 
	UINT	DisconnTimer;						// in seconds 
	UINT	NEIRegTimer;						// in seconds 
	UINT	ReconnRetryTimer;					// in seconds 
	UINT	LinkResetTimer;						// in seconds 
	UINT	LinkResetAckTimer;					// in seconds 
	UINT	n401RetryLimit;						// per CS-CDPD Implementers guidelines 
	UINT	n402RetryLimit;						// per CS-CDPD Implementers guidelines 
	UINT	n404RetryLimit;						// per CS-CDPD Implementers guidelines 
	UINT	n405RetryLimit;						// per CS-CDPD Implementers guidelines 
} WW_CDPD_CS_CONFIGURATION; 
 
 
// 
// OID_WW_PIN_LOC_AUTHORIZE 
// 
// The Pin Point OIDs that referenced the structures below have been 
// deprecated from the PCCA STD-201 standard. Their definitions are still 
// included for historical purposes only and should not be used. 
// 
typedef INT	WW_PIN_AUTHORIZED;					// 0  = unauthorized 
												// 1  = authorized 
												// -1 = unknown 
 
// 
// OID_WW_PIN_LAST_LOCATION 
// OID_WW_PIN_LOC_FIX 
// 
typedef struct _WW_PIN_LOCATION 
{ 
	INT		Latitude;							// Latitude in hundredths of a second 
	INT		Longitude;							// Longitude in hundredths of a second 
	INT		Altitude;							// Altitude in feet 
	INT		FixTime;							// Time of the location fix, since midnight,  local time (of the 
												// current day), in tenths of a second 
	INT		NetTime;							// Current local network time of the current day, since midnight, 
												// in tenths of a second 
	INT		LocQuality;							// 0-100 = location quality 
	INT		LatReg;								// Latitude registration offset, in hundredths of a second 
	INT		LongReg;							// Longitude registration offset, in hundredths of a second 
	INT		GMTOffset;							// Offset in minutes of the local time zone from GMT 
} WW_PIN_LOCATION, *PWW_PIN_LOCATION; 
 
 
// 
// The following is set on a per-packet basis as OOB data with NdisClassWirelessWanMbxMailbox 
// 
typedef	ULONG	WW_MBX_MAILBOX_FLAG;			// 1 = set mailbox flag, 0 = do not set mailbox flag 
 
// 
// OID_WW_MBX_SUBADDR 
// 
typedef struct _WW_MBX_PMAN 
{ 
	BOOLEAN				ACTION;					// 0 = Login PMAN,  1 = Logout PMAN 
	ULONG				MAN; 
	UCHAR				PASSWORD[8];			// Password should be null for Logout and indications. 
												// Maximum length of password is 8 chars. 
} WW_MBX_PMAN, *PWW_MBX_PMAN; 
 
// 
// OID_WW_MBX_FLEXLIST 
// 
typedef struct  _WW_MBX_FLEXLIST 
{ 
	INT		count;								//  Number of MAN entries used. 
												// -1=unknown. 
	ULONG	MAN[7];								//  List of MANs. 
} WW_MBX_FLEXLIST; 
 
// 
// OID_WW_MBX_GROUPLIST 
// 
typedef struct  _WW_MBX_GROUPLIST 
{ 
	INT	 count;									//  Number of MAN entries used. 
												// -1=unknown. 
	ULONG	MAN[15];							//  List of MANs. 
} WW_MBX_GROUPLIST; 
 
// 
// OID_WW_MBX_TRAFFIC_AREA 
// 
typedef enum	_WW_MBX_TRAFFIC_AREA 
{ 
	unknown_traffic_area,						// The driver has no information about the current traffic area. 
	in_traffic_area,							// Mobile unit has entered a subscribed traffic area. 
	in_auth_traffic_area,						// Mobile unit is outside traffic area but is authorized. 
	unauth_traffic_area							// Mobile unit is outside traffic area but is un-authorized. 
} WW_MBX_TRAFFIC_AREA; 
 
// 
// OID_WW_MBX_LIVE_DIE 
// 
typedef INT	WW_MBX_LIVE_DIE;					//  0 = DIE last received	 
												//  1 = LIVE last received 
												// -1 = unknown 
 
// 
// OID_WW_MBX_TEMP_DEFAULTLIST 
// 
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 
 
// 
// 
// Base types that were redefined for BPC 
// 
// BPC_FILETIME is used exactly like FILETIME in Win32 
// 
// BPC_HANDLE is opaque to everything except the Miniport 
//				 
typedef struct _BPC_FILETIME 
{ 
	ULONG	dwLowDateTime; 
	ULONG	dwHighDateTime; 
} BPC_FILETIME, *PBPC_FILETIME; 
 
typedef	PVOID	BPC_HANDLE; 
 
// 
// BPC Extension Globals 
// 
// 
#define	BPC_MIN_DIMENSION		1 
#define	BPC_MAX_BUFFER_SIZE		64 
#define	BPC_MIN_BUFFER_SIZE		4 
#define	BPC_DEVICE_ANY			((BPC_HANDLE) 0xFFFFFFFF) 
 
// 
// Buffer indicate reason codes 
// 
// 
typedef	enum _NDIS_BPC_INDICATE_REASON 
{ 
	bpcBufferFull = 0, 
	bpcBufferForced, 
	bpcBufferTimeOut, 
	bpcBufferDiscontinuity, 
	bpcBufferOverflow, 
	bpcBufferStatusEvent 
 
} NDIS_BPC_INDICATE_REASON, *PNDIS_BPC_INDICATE_REASON; 
 
 
// 
// BPC Stream Types 
// 
#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 
 
 
// 
// BPC Adapter Capabilities 
// 
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; 
 
 
// 
//	BPC	Device Enumeration 
// 
typedef	struct _NDIS_BPC_DEVICES 
{ 
	ULONG		ulcDevices; 
	BPC_HANDLE	rgnhDevices[BPC_MIN_DIMENSION]; 
 
} NDIS_BPC_DEVICES, *PNDIS_BPC_DEVICES; 
 
#define	CbDevices(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICES, rgnhDevices) + (cnt) * sizeof(BPC_HANDLE)) 
 
 
// 
// BPC Device Capabilities Structure 
// 
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; 
 
#define	CbDeviceCaps(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICE_CAPS, rgulStreamTypes) + (cnt) * sizeof(ULONG)) 
 
 
// 
// BPC Device Capability Definitions 
// (ie Flags that can be set in ulBPCCaps 
// 
#define	BPCCapBusMasteredData	0x01 
#define	BPCCapIndependentTuner	0x02 
#define	BPCCapExternalDataBus	0x04 
#define	BPCCapLowSpeedData		0x10 
#define	BPCCapHighSpeedData		0x20 
 
 
// 
// BPC Device Settings Structure 
// 
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; 
 
#define	CbDeviceSettings(cnt) (FIELD_OFFSET(NDIS_BPC_DEVICE_SETTINGS, rgulAddressConnection) + (cnt) * sizeof(ULONG)) 
 
 
// 
// BPC Connection State Definitions 
// (ie Acceptable values for ulState) 
// 
#define	BPC_CONNECT_STATE_UNCOMMITTED	0 
#define	BPC_CONNECT_STATE_QUEUED		1 
#define	BPC_CONNECT_STATE_ACTIVE		2 
#define	BPC_CONNECT_STATE_DISCONNECTING	3 
 
 
// 
// BPC Connections Status Structure 
// 
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; 
 
 
// 
// BPC Address Comparison Structure 
// 
typedef	struct NDIS_BPC_ADDRESS_COMPARE 
{ 
	BOOLEAN	fEqual; 
	ULONG	ulcbFirstOffset; 
	ULONG	ulcbFirstLength; 
	ULONG	ulcbSecondOffset; 
	ULONG	ulcbSecondLength; 
 
} NDIS_BPC_ADDRESS_COMPARE, *PNDIS_BPC_ADDRESS_COMPARE; 
 
 
// 
// BPC Program Guide Types 
// 
// Currently there are no Generic BPC Program Guide types. 
// 
#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 
 
 
// 
// BPC Program Guide Structure 
// 
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; 
 
 
// 
// BPC Extension Errors 
// (ie Acceptable values for ulBPCError) 
// 
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; 
 
 
// 
//	BPC	Last Error Structure 
// 
typedef	struct NDIS_BPC_LAST_ERROR 
{ 
	ULONG		ulErrorContext; 
	ULONG		ulBPCError; 
	ULONG		ulAdapterError; 
	ULONG		ulAdapterContext; 
 
} NDIS_BPC_LAST_ERROR, *PNDIS_BPC_LAST_ERROR; 
 
 
// 
//	BPC	Buffer Pool Request/Report Structure 
// 
typedef	struct NDIS_BPC_POOL 
{ 
	BPC_HANDLE	nhConnection; 
	ULONG		ulcbPoolSize; 
	ULONG		ulcbMaxBufferSize; 
	ULONG		ulcbBufferReserved; 
 
} NDIS_BPC_POOL, *PNDIS_BPC_POOL; 
 
 
// 
// BPC Provider and Adapter Specific Structures are defined in the 
// BpcXXXX.H file which the Provider/Adapter Manufacturer supplies. 
// 
 
// 
// BPC Connect Structure 
// 
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; 
 
#define	CbConnect(cnt)	(FIELD_OFFSET(NDIS_BPC_CONNECT, rgulAddress) + (cnt) * sizeof(ULONG)) 
 
 
// 
//	BPC	Commit Connections Structure 
// 
typedef	struct NDIS_BPC_COMMIT 
{ 
	ULONG		ulcConnections; 
	BPC_HANDLE	rgnhConnections[BPC_MIN_DIMENSION]; 
 
} NDIS_BPC_COMMIT, *PNDIS_BPC_COMMIT; 
 
 
// 
//	BPC	Disconnect Structure 
// 
typedef	struct NDIS_BPC_DISCONNECT 
{ 
	BPC_HANDLE	nhConnection; 
 
} NDIS_BPC_DISCONNECT, *PNDIS_BPC_DISCONNECT; 
 
 
// 
//	BPC	Enable Connection Structure 
// 
typedef	struct NDIS_BPC_CONNECTION_ENABLE 
{ 
	BPC_HANDLE	nhConnection; 
	BOOLEAN		fEnabled; 
 
} NDIS_BPC_CONNECTION_ENABLE, *PNDIS_BPC_CONNECTION_ENABLE; 
 
 
// 
// BPC Pool Return Structure 
// 
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; 
 
 
// 
//	BPC	Media Specific Information Structure 
// 
typedef	struct NDIS_BPC_MEDIA_SPECIFIC_INFORMATION 
{ 
	BPC_HANDLE nhConnection;					// The handle to the data device. 
	ULONG		ulBPCStreamType;				// The stream type of the data in packet 
	ULONG		ulReasonCode;					// The reason the buffer was indicated 
	PVOID		pvMiniportReserved1; 
	ULONG		ulMiniportReserved2; 
 
} NDIS_BPC_MEDIA_SPECIFIC_INFORMATION, *PNDIS_BPC_MEDIA_SPECIFIC_INFORMATION; 
 
 
// 
// BPC Status Categories 
// 
#define	BPC_CATEGORY_BPC			0x01000000 
#define	BPC_CATEGORY_PROVIDER		0x02000000 
#define	BPC_CATEGORY_ADAPTER		0x03000000 
 
 
// 
// BPC Status Types for Category BPC_CATEGORY_BPC 
// 
#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 
 
 
// 
// BPC Status Indication Structure 
// 
typedef	struct NDIS_BPC_STATUS 
{ 
	ULONG ulStatusCategory; 
	ULONG ulStatusType; 
	ULONG ulcbStatus; 
	ULONG rgulStatus; 
} NDIS_BPC_STATUS, *PNDIS_BPC_STATUS; 
 
 
// 
// BPC Connection Status Structure 
// 
// All BPC Generic Connection Status package this structure 
// in rgulStatus to indicate to which connection and device 
// the status pertains. 
// 
typedef	struct NDIS_BPC_STATUS_CONNECTION 
{ 
	BPC_HANDLE	nhConnection; 
	BPC_HANDLE nhDevice; 
 
} NDIS_BPC_STATUS_CONNECTED, *PNDIS_BPC_STATUS_CONNECTED; 
 
#ifdef __cplusplus 
} 
#endif 
 
#endif // _NTDDNDIS_