📄 ndis.h
字号:
/* * ndis.h * * Network Device Interface Specification definitions * * This file is part of the w32api package. * * Contributors: * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * DEFINES: i386 - Target platform is i386 * _NDIS_ - Define only for NDIS library * NDIS_MINIPORT_DRIVER - Define only for NDIS miniport drivers * NDIS40 - Use NDIS 4.0 structures by default * NDIS50 - Use NDIS 5.0 structures by default * NDIS50_MINIPORT - Building NDIS 5.0 miniport driver * NDIS51_MINIPORT - Building NDIS 5.1 miniport driver */#ifndef __NDIS_H#define __NDIS_H#if __GNUC__ >=3#pragma GCC system_header#endif#ifdef __cplusplusextern "C" {#endif#include "ntddk.h"#include "ntddndis.h"#include "netpnp.h"#include "netevent.h"#include <winsock2.h>#if defined(_NDIS_) #define NDISAPI DECLSPEC_EXPORT#else #define NDISAPI DECLSPEC_IMPORT#endif#if defined(NDIS50_MINIPORT)#ifndef NDIS50#define NDIS50#endif#endif /* NDIS50_MINIPORT */#if defined(NDIS51_MINIPORT)#ifndef NDIS51#define NDIS51#endif#endif /* NDIS51_MINIPORT *//* NDIS 3.0 is default */#if !defined(NDIS30) || !defined(NDIS40) || !defined(NDIS50) || !defined(NDIS51)#define NDIS30#endif /* !NDIS30 || !NDIS40 || !NDIS50 || !NDIS51 */#if 1/* FIXME: */typedef PVOID QUEUED_CLOSE;#endiftypedef ULONG NDIS_OID, *PNDIS_OID;typedef struct _X_FILTER FDDI_FILTER, *PFDDI_FILTER;typedef struct _X_FILTER TR_FILTER, *PTR_FILTER;typedef struct _X_FILTER NULL_FILTER, *PNULL_FILTER;typedef struct _REFERENCE { KSPIN_LOCK SpinLock; USHORT ReferenceCount; BOOLEAN Closing;} REFERENCE, * PREFERENCE;/* NDIS base types */typedef struct _NDIS_SPIN_LOCK { KSPIN_LOCK SpinLock; KIRQL OldIrql;} NDIS_SPIN_LOCK, * PNDIS_SPIN_LOCK;typedef struct _NDIS_EVENT { KEVENT Event;} NDIS_EVENT, *PNDIS_EVENT;typedef PVOID NDIS_HANDLE, *PNDIS_HANDLE;typedef int NDIS_STATUS, *PNDIS_STATUS;typedef ANSI_STRING NDIS_ANSI_STRING, *PNDIS_ANSI_STRING;typedef UNICODE_STRING NDIS_STRING, *PNDIS_STRING;typedef MDL NDIS_BUFFER, *PNDIS_BUFFER;typedef ULONG NDIS_ERROR_CODE, *PNDIS_ERROR_CODE;/* NDIS_STATUS constants */#define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS)#define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING)#define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L)#define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L)#define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L)#define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L)#define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L)#define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L)#define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L)#define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L)#define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L)#define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L)#define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L)#define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL)#define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL)#define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL)#define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL)#define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL)#define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL)#define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L)#define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L)#define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION ((NDIS_STATUS)0x40010012L)#define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION#define NDIS_STATUS_LINK_SPEED_CHANGE ((NDIS_STATUS)0x40010013L)#define NDIS_STATUS_WAN_GET_STATS ((NDIS_STATUS)0x40010014L)#define NDIS_STATUS_WAN_CO_FRAGMENT ((NDIS_STATUS)0x40010015L)#define NDIS_STATUS_WAN_CO_LINKPARAMS ((NDIS_STATUS)0x40010016L)#define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)#define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)#define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)#define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)#define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL)#define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)#define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L)#define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L)#define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L)#define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L)#define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L)#define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L)#define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L)#define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL)#define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL)#define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL)#define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL)#define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL)#define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED)#define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL)#define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L)#define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L)#define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L)#define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L)#define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L)#define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L)#define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)#define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L)#define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L)#define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L)#define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL)#define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL)#define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL)#define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL)#define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL)#define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL)#define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L)#define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L)#define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L)#define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L)#define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L)#define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L)#define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L)#define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L)#define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L)#define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L)#define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L)#define NDIS_STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST)#define NDIS_STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE)/* NDIS error codes for error logging */#define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT#define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE#define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE#define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND#define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT#define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE#define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION#define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT#define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS#define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION#define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER#define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER#define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS#define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL#define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED/* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */#define NDIS_MEMORY_CONTIGUOUS 0x00000001#define NDIS_MEMORY_NONCACHED 0x00000002/* NIC attribute flags. Used by NdisMSetAttributes(Ex) */#define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001#define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002#define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004#define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008#define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010#define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020#define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040#define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK 0x00000080#define NDIS_ATTRIBUTE_NOT_CO_NDIS 0x00000100#define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS 0x00000200/* Lock */typedef union _NDIS_RW_LOCK_REFCOUNT { UINT RefCount; UCHAR cacheLine[16];} NDIS_RW_LOCK_REFCOUNT;typedef struct _NDIS_RW_LOCK { union { struct { KSPIN_LOCK SpinLock; PVOID Context; } s; UCHAR Reserved[16]; } u; NDIS_RW_LOCK_REFCOUNT RefCount[MAXIMUM_PROCESSORS];} NDIS_RW_LOCK, *PNDIS_RW_LOCK;typedef struct _LOCK_STATE { USHORT LockState; KIRQL OldIrql;} LOCK_STATE, *PLOCK_STATE;/* Timer */typedef VOID DDKAPI(*PNDIS_TIMER_FUNCTION)( /*IN*/ PVOID SystemSpecific1, /*IN*/ PVOID FunctionContext, /*IN*/ PVOID SystemSpecific2, /*IN*/ PVOID SystemSpecific3);typedef struct _NDIS_TIMER { KTIMER Timer; KDPC Dpc;} NDIS_TIMER, *PNDIS_TIMER;/* Hardware */typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA, *PNDIS_MCA_POS_DATA;typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION, *PNDIS_EISA_SLOT_INFORMATION;typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION, *PNDIS_EISA_FUNCTION_INFORMATION;typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST, *PNDIS_RESOURCE_LIST;/* Hardware status codes (OID_GEN_HARDWARE_STATUS) */typedef enum _NDIS_HARDWARE_STATUS { NdisHardwareStatusReady, NdisHardwareStatusInitializing, NdisHardwareStatusReset, NdisHardwareStatusClosing, NdisHardwareStatusNotReady} NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;/* OID_GEN_GET_TIME_CAPS */typedef struct _GEN_GET_TIME_CAPS { ULONG Flags; ULONG ClockPrecision;} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;/* Flag bits */#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/* OID_GEN_GET_NETCARD_TIME */typedef struct _GEN_GET_NETCARD_TIME { ULONGLONG ReadTime;} GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;/* NDIS driver medium (OID_GEN_MEDIA_SUPPORTED / OID_GEN_MEDIA_IN_USE) */typedef enum _NDIS_MEDIUM { NdisMedium802_3, NdisMedium802_5, NdisMediumFddi, NdisMediumWan, NdisMediumLocalTalk, NdisMediumDix, NdisMediumArcnetRaw, NdisMediumArcnet878_2, NdisMediumAtm, NdisMediumWirelessWan, NdisMediumIrda, NdisMediumBpc, NdisMediumCoWan, NdisMedium1394, NdisMediumMax} NDIS_MEDIUM, *PNDIS_MEDIUM;/* 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 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/* State of the LAN media (OID_GEN_MEDIA_CONNECT_STATUS) */typedef enum _NDIS_MEDIA_STATE { NdisMediaStateConnected, NdisMediaStateDisconnected} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;/* OID_GEN_SUPPORTED_GUIDS */typedef struct _NDIS_GUID { GUID Guid; union { NDIS_OID Oid; NDIS_STATUS Status; } u; ULONG Size; ULONG Flags;} NDIS_GUID, *PNDIS_GUID;#define NDIS_GUID_TO_OID 0x00000001#define NDIS_GUID_TO_STATUS 0x00000002#define NDIS_GUID_ANSI_STRING 0x00000004#define NDIS_GUID_UNICODE_STRING 0x00000008#define NDIS_GUID_ARRAY 0x00000010typedef struct _NDIS_PACKET_POOL { NDIS_SPIN_LOCK SpinLock; struct _NDIS_PACKET *FreeList; UINT PacketLength; UCHAR Buffer[1];} NDIS_PACKET_POOL, * PNDIS_PACKET_POOL;/* NDIS_PACKET_PRIVATE.Flags constants */#define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40#define fPACKET_ALLOCATED_BY_NDIS 0x80typedef struct _NDIS_PACKET_PRIVATE { UINT PhysicalCount; UINT TotalLength; PNDIS_BUFFER Head; PNDIS_BUFFER Tail; PNDIS_PACKET_POOL Pool; UINT Count; ULONG Flags; BOOLEAN ValidCounts; UCHAR NdisPacketFlags; USHORT NdisPacketOobOffset;} NDIS_PACKET_PRIVATE, * PNDIS_PACKET_PRIVATE;typedef struct _NDIS_PACKET { NDIS_PACKET_PRIVATE Private; union { struct { UCHAR MiniportReserved[2 * sizeof(PVOID)]; UCHAR WrapperReserved[2 * sizeof(PVOID)]; } s1; struct { UCHAR MiniportReservedEx[3 * sizeof(PVOID)]; UCHAR WrapperReservedEx[sizeof(PVOID)]; } s2; struct { UCHAR MacReserved[4 * sizeof(PVOID)]; } s3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -