📄 w32ndis.h
字号:
#ifndef _W32NDIS_H
#define _W32NDIS_H
/////////////////////////////////////////////////////////////////////////////
//// SPECIFY STRUCTURE PACKING
//#pragma pack(push,2)
#pragma pack(push,4)
#ifndef _NDIS_
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
//
// NtDeviceIoControlFile IoControlCode values for NT NDIS adapter devices.
//
#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 )
//
// Note
// ----
// Control codes 2 through 6 differ between Windows NT and Windows 2000.
// Since their use is not documented (even indirectly) anywhere, their
// definitions are removed from W32NDIS.H.
//
#define IOCTL_NDIS_GET_LOG_DATA _NDIS_CONTROL_CODE( 7, METHOD_OUT_DIRECT )
typedef struct _MEMORY_DESCRIPTOR {
PCHAR Address;
UINT Length;
} MEMORY_DESCRIPTOR, *PMEMORY_DESCRIPTOR;
typedef struct _STRING {
USHORT Length;
USHORT MaximumLength;
PUCHAR Buffer;
} STRING, *PSTRING;
typedef STRING NDIS_STRING, *PNDIS_STRING;
typedef PVOID NDIS_HANDLE, *PNDIS_HANDLE;
typedef ULONG NDIS_STATUS;
typedef NDIS_STATUS *PNDIS_STATUS;
// BUGBUG for compatibility with NT, ask them to remove it from
// Their drivers
typedef NDIS_STATUS NTSTATUS;
#define PDRIVER_OBJECT PVOID
#define PUNICODE_STRING PVOID
#define PDEVICE_OBJECT PVOID
typedef enum _NDIS_REQUEST_TYPE {
NdisRequestQueryInformation,
NdisRequestSetInformation,
NdisRequestQueryStatistics,
NdisRequestOpen,
NdisRequestClose,
NdisRequestSend,
NdisRequestTransferData,
NdisRequestReset,
NdisRequestGeneric1,
NdisRequestGeneric2,
NdisRequestGeneric3,
NdisRequestGeneric4
} NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE;
//
// Object ID
//
typedef ULONG NDIS_OID, *PNDIS_OID;
//
// Medium Ndis Driver is running on
//
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;
//
// Hardware status codes (OID_GEN_HARDWARE_STATUS).
//
typedef enum _NDIS_HARDWARE_STATUS {
NdisHardwareStatusReady,
NdisHardwareStatusInitializing,
NdisHardwareStatusReset,
NdisHardwareStatusClosing,
NdisHardwareStatusNotReady
} NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
//
// 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
//
typedef enum _NDIS_WAN_MEDIUM_SUBTYPE {
NdisWanMediumHub,
NdisWanMediumX_25,
NdisWanMediumIsdn,
NdisWanMediumSerial,
NdisWanMediumFrameRelay,
NdisWanMediumAtm,
NdisWanMediumSonet,
NdisWanMediumSW56K,
NdisWanMediumPPTP,
NdisWanMediumL2TP,
NdisWanMediumIrda,
NdisWanMediumParallel,
NdisWanMediumPppoe
} NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE;
//
// Defines the header format for WAN medium
//
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 an WAN line
//
typedef enum _NDIS_WAN_QUALITY {
NdisWanRaw,
NdisWanErrorControl,
NdisWanReliable
} NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
//
// Defines the state of the LAN media
//
typedef enum _NDIS_MEDIA_STATE
{
NdisMediaStateConnected,
NdisMediaStateDisconnected
} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
//
// The structure passed up on a WAN_LINE_UP indication
//
typedef struct _NDIS_WAN_LINE_UP {
ULONG LinkSpeed; // 100 bps units
ULONG MaximumTotalSize; // suggested max for send packets
NDIS_WAN_QUALITY Quality;
USHORT SendWindow; // suggested by the MAC
UCHAR Address[1]; // variable length, depends on address type
} NDIS_WAN_LINE_UP, *PNDIS_WAN_LINE_UP;
//
// The structure passed up on a WAN_LINE_DOWN indication
//
typedef struct _NDIS_WAN_LINE_DOWN {
UCHAR Address[1]; // variable length, depends on address type
} NDIS_WAN_LINE_DOWN, *PNDIS_WAN_LINE_DOWN;
//
// The structure passed up on a WAN_FRAGMENT indication
//
typedef struct _NDIS_WAN_FRAGMENT {
UCHAR Address[1]; // variable length, depends on address type
} NDIS_WAN_FRAGMENT, *PNDIS_WAN_FRAGMENT;
//
// Defines the state of a token-ring adapter
//
typedef enum _NDIS_802_5_RING_STATE {
NdisRingStateOpened = 1,
NdisRingStateClosed,
NdisRingStateOpening,
NdisRingStateClosing,
NdisRingStateOpenFailure,
NdisRingStateRingFailure
} NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE;
//
// NDIS_STATUS values
//
/* INC */
#define NDIS_STATUS_SUCCESS ((NDIS_STATUS)0x00000000L)
#define NDIS_STATUS_PENDING ((NDIS_STATUS)0x00000103L)
#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_MAY_CLOSE ((NDIS_STATUS)0x00010004L)
#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_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)
#define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)
#define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)
#define NDIS_STATUS_FAILURE ((NDIS_STATUS)0xC0000001L)
#define NDIS_STATUS_RESOURCES ((NDIS_STATUS)0xC000009AL)
#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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -