/*++ BUILD Version: 0001 // Increment this if a change has global effects
Copyright (c) 1990-1993 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:
Steve Wood (stevewo) 27-May-1990
Revision History:
Adam Barr (adamba) 04-Nov-1992 added the correct values for NDIS 3.0.
Jameel Hyder (jameelh) 01-Aug-95 added Pnp IoCTLs and structures
Kyle Brandon (kyleb) 09/24/96 added general co ndis oids.
-- */
#ifndef _NTDDNDIS_
#define _NTDDNDIS_
//
// 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_ADD_DEVICE _NDIS_CONTROL_CODE( 2, METHOD_BUFFERED )
#define IOCTL_NDIS_DELETE_DEVICE _NDIS_CONTROL_CODE( 3, METHOD_BUFFERED )
#define IOCTL_NDIS_TRANSLATE_NAME _NDIS_CONTROL_CODE( 4, METHOD_BUFFERED )
#define IOCTL_NDIS_ADD_TDI_DEVICE _NDIS_CONTROL_CODE( 5, METHOD_BUFFERED )
#define IOCTL_NDIS_NOTIFY_PROTOCOL _NDIS_CONTROL_CODE( 6, METHOD_BUFFERED )
#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;
//
// IOCTL_NDIS_QUERY_ALL_STATS returns a sequence of these, packed
// together (no padding is required since statistics all have
// four or eight bytes of data).
//
typedef struct _NDIS_STATISTICS_VALUE {
NDIS_OID Oid;
ULONG DataLength;
UCHAR Data[1]; // variable length
} NDIS_STATISTICS_VALUE, *PNDIS_STATISTICS_VALUE;
//
// Structure used by TRANSLATE_NAME IOCTL
//
typedef struct _NET_PNP_ID {
ULONG ClassId;
ULONG Token;
} NET_PNP_ID, *PNET_PNP_ID;
typedef struct _NET_PNP_TRANSLATE_LIST {
ULONG BytesNeeded;
NET_PNP_ID IdArray[ANYSIZE_ARRAY];
} NET_PNP_TRANSLATE_LIST, *PNET_PNP_TRANSLATE_LIST;
//
// 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
LONG Offset; // Offset of data relative to the descriptor
} NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
//
// Object Identifiers used by NdisRequest Query/Set Information
//
//
// General Objects
//
#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_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
//
// These are connection-oriented general OIDs.
// These replace the above OIDs for connection-oriented media.
//
#define OID_GEN_CO_SUPPORTED_LIST 0x00010101
#define OID_GEN_CO_HARDWARE_STATUS 0x00010102
#define OID_GEN_CO_MEDIA_SUPPORTED 0x00010103
#define OID_GEN_CO_MEDIA_IN_USE 0x00010104
#define OID_GEN_CO_LINK_SPEED 0x00010105
#define OID_GEN_CO_VENDOR_ID 0x00010106
#define OID_GEN_CO_VENDOR_DESCRIPTION 0x00010107
#define OID_GEN_CO_DRIVER_VERSION 0x00010108
#define OID_GEN_CO_PROTOCOL_OPTIONS 0x00010109
#define OID_GEN_CO_MAC_OPTIONS 0x0001010A
#define OID_GEN_CO_MEDIA_CONNECT_STATUS 0x0001010B
#define OID_GEN_CO_VENDOR_DRIVER_VERSION 0x0001010C
#define OID_GEN_CO_MINIMUM_LINK_SPEED 0x0001010D
#define OID_GEN_CO_GET_TIME_CAPS 0x00010201
#define OID_GEN_CO_GET_NETCARD_TIME 0x00010202
//
// These are connection-oriented statistics OIDs.
//
#define OID_GEN_CO_XMIT_PDUS_OK 0x00020101
#define OID_GEN_CO_RCV_PDUS_OK 0x00020102
#define OID_GEN_CO_XMIT_PDUS_ERROR 0x00020103
#define OID_GEN_CO_RCV_PDUS_ERROR 0x00020104
#define OID_GEN_CO_RCV_PDUS_NO_BUFFER 0x00020105
#define OID_GEN_CO_RCV_CRC_ERROR 0x00020201
#define OID_GEN_CO_TRANSMIT_QUEUE_LENGTH 0x00020202
#define OID_GEN_CO_BYTES_XMIT 0x00020203
#define OID_GEN_CO_BYTES_RCV 0x00020204
#define OID_GEN_CO_BYTES_XMIT_OUTSTANDING 0x00020205
#define OID_GEN_CO_NETCARD_LOAD 0x00020206
//
// These are objects for Connection-oriented media call-managers and are not
// valid for ndis drivers. Under construction.
//
#define OID_CO_ADD_PVC 0xFF000001
#define OID_CO_DELETE_PVC 0xFF000002
#define OID_CO_GET_CALL_INFORMATION 0xFF000003
#define OID_CO_ADD_ADDRESS 0xFF000004
#define OID_CO_DELETE_ADDRESS 0xFF000005
#define OID_CO_GET_ADDRESSES 0xFF000006
#define OID_CO_ADDRESS_CHANGE 0xFF000007
#define OID_CO_SIGNALING_ENABLED 0xFF000008
#define OID_CO_SIGNALING_DISABLED 0xFF000009
//
// 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_D