📄 ntddndis.h
字号:
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;
typedef enum _UDP_ENCAP_TYPE
{
OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_IKE,
OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_OTHER
} UDP_ENCAP_TYPE, * PUDP_ENCAP_TYPE;
typedef struct _OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY
{
UDP_ENCAP_TYPE UdpEncapType;
USHORT DstEncapPort;
} OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY, * POFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY;
typedef struct _OFFLOAD_IPSEC_ADD_UDPESP_SA
{
IPAddr SrcAddr;
IPMask SrcMask;
IPAddr DstAddr;
IPMask DstMask;
ULONG Protocol;
USHORT SrcPort;
USHORT DstPort;
IPAddr SrcTunnelAddr;
IPAddr DstTunnelAddr;
USHORT Flags;
SHORT NumSAs;
OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
HANDLE OffloadHandle;
OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY EncapTypeEntry;
HANDLE EncapTypeEntryOffldHandle;
ULONG KeyLen;
UCHAR KeyMat[1];
} OFFLOAD_IPSEC_ADD_UDPESP_SA, * POFFLOAD_IPSEC_ADD_UDPESP_SA;
typedef struct _OFFLOAD_IPSEC_DELETE_UDPESP_SA
{
HANDLE OffloadHandle;
HANDLE EncapTypeEntryOffldHandle;
} OFFLOAD_IPSEC_DELETE_UDPESP_SA, * POFFLOAD_IPSEC_DELETE_UDPESP_SA;
//
// Type to go with OID_GEN_VLAN_ID: the least significant 12 bits are
// used as the VLAN ID (VID) per IEEE 802.1Q. Higher order bits are
// reserved and must be set to 0.
//
typedef ULONG NDIS_VLAN_ID;
//
// 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,
NdisMediumInfiniBand,
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
{
NdisPhysicalMediumUnspecified,
NdisPhysicalMediumWirelessLan,
NdisPhysicalMediumCableModem,
NdisPhysicalMediumPhoneLine,
NdisPhysicalMediumPowerLine,
NdisPhysicalMediumDSL, // includes ADSL and UADSL (G.Lite)
NdisPhysicalMediumFibreChannel,
NdisPhysicalMedium1394,
NdisPhysicalMediumWirelessWan,
NdisPhysicalMediumNative802_11,
NdisPhysicalMediumBluetooth,
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -