📄 naltypes.h
字号:
} FDDIFRAMEHDR;
#define DEFAULT_FDDIFC 0x10
typedef struct _FDDISTATFRAME
{
DWORD TimeStamp; //... Relative time in milliseconds.
WORD FrameLength; //... MAC frame length.
WORD nBytesAvail; //... Actual frame length copied.
FDDIFRAMEHDR FrameHeader;
BYTE FrameID[4]; //... "$MST"
DWORD Flags; //... Flags
DWORD FrameType; //... Statistics is always 103 (0x67)
WORD StatsDataLen; //... Length of Version DWORD + STATISTICS
DWORD StatsVersion;
STATISTICS Statistics;
} FDDISTATFRAME;
typedef FDDISTATFRAME *LPFDDISTATFRAME;
typedef FDDISTATFRAME UNALIGNED *ULPFDDISTATFRAME;
#define FDDISTATFRAME_SIZE sizeof(FDDISTATFRAME)
typedef struct _TRSTATFRAME
{
DWORD TimeStamp; //... Relative time in milliseconds.
WORD FrameLength; //... MAC frame length.
WORD nBytesAvail; //... Actual frame length copied.
TRFRAMEHDR FrameHeader;
BYTE FrameID[4]; //... "$MST"
DWORD Flags; //... Flags
DWORD FrameType; //... Statistics is always 103 (0x67)
WORD StatsDataLen; //... Length of Version DWORD + STATISTICS
DWORD StatsVersion;
STATISTICS Statistics;
} TRSTATFRAME;
typedef TRSTATFRAME *LPTRSTATFRAME;
typedef TRSTATFRAME UNALIGNED *ULPTRSTATFRAME;
#define TRSTATFRAME_SIZE sizeof(TRSTATFRAME)
typedef struct _STATFRAME
{
DWORD TimeStamp; //... Relative time in milliseconds.
WORD FrameLength; //... MAC frame length.
WORD nBytesAvail; //... Actual frame length copied.
FRAMEHDR FrameHeader;
BYTE FrameID[4]; //... "$MST"
DWORD Flags; //... Flags
DWORD FrameType; //... Statistics is always 103 (0x67)
WORD StatsDataLen; //... Length of Version DWORD + STATISTICS
DWORD StatsVersion;
STATISTICS Statistics;
} STATFRAME;
#define STATISTICS_VERSION 0x00000000
typedef STATFRAME *LPSTATFRAME;
typedef STATFRAME UNALIGNED *ULPSTATFRAME;
#define STATFRAME_SIZE sizeof(STATFRAME)
//=============================================================================
// The network procedure type.
//
// Syntax:
//
// DWORD CALLBACK NetworkProc(handle, message, status, UserContext, param1, param2).
//=============================================================================
typedef DWORD (WINAPI *NETWORKPROC)(HNETWORK, DWORD, DWORD, LPVOID, LPVOID, LPVOID);
//=============================================================================
// Packet queue data structure.
//=============================================================================
typedef struct _PACKETQUEUE *LPPACKETQUEUE;
typedef struct _PACKETQUEUE
{
//=========================================================================
// The following members are set by the NAL interface and
// must be NOT used by the Bloodhound kernel or applications.
//=========================================================================
LINK QueueLinkage; //... Queue linkage (used by Bloodhound drivers).
DWORD State; //... Transmit complete flag (used by Bloodhound drivers).
DWORD Status; //... Final Bloodhound error code (used by Bloodhound drivers).
LPVOID TimerHandle; //... Handle to timer or pending transmits (used by Bloodhound drivers).
HANDLE hNetwork; //... Network handle (set by NAL).
LPVOID InstData; //... OpenNetwork instance data.
//=========================================================================
// The following members are set by NAL applications, such as the Bloodhound
// kernel.
//=========================================================================
DWORD Size; //... The overall size in bytes.
DWORD FrameTimeDelta; //... Time between frames (-1 means use frame timestamp).
DWORD QueueTimeDelta; //... Time between queues.
DWORD IterationCount; //... Number of times to repeat send sequence.
TRANSMITSTATS TransmitStats; //... Transmit statistics structure.
NETWORKPROC NetworkProc; //... Network procedure, used by the kernel to hook transmit completions.
//=========================================================================
// The actual list of packets to transmit.
//=========================================================================
DWORD nPackets; //... Packet queue length (i.e. number of frames to send).
PACKET Packet[0]; //... Packet queue.
} PACKETQUEUE;
#define PACKETQUEUE_SIZE sizeof(PACKETQUEUE)
#define PACKETQUEUE_STATE_VOID 0
#define PACKETQUEUE_STATE_PENDING 1
#define PACKETQUEUE_STATE_COMPLETE 2
#define PACKETQUEUE_STATE_CANCEL 3
//=============================================================================
// Address structures
//=============================================================================
#define MAX_NAME_SIZE 32
#define IP_ADDRESS_SIZE 4
#define MAC_ADDRESS_SIZE 6
// What is the maximum address size that we could have to copy?
// IPX == DWORD + 6 bytes == 10
#define MAX_ADDRESS_SIZE 10
// VINES IP ADDRESS
typedef struct _VINES_IP_ADDRESS
{
DWORD NetID;
WORD SubnetID;
} VINES_IP_ADDRESS;
typedef VINES_IP_ADDRESS *LPVINES_IP_ADDRESS;
#define VINES_IP_ADDRESS_SIZE sizeof(VINES_IP_ADDRESS)
// ... IPX address
typedef struct _IPX_ADDRESS
{
BYTE Subnet[4];
BYTE Address[6];
} IPX_ADDRESS;
typedef IPX_ADDRESS *LPIPX_ADDRESS;
#define IPX_ADDRESS_SIZE sizeof(IPX_ADDRESS)
//... XNS address
typedef IPX_ADDRESS XNS_ADDRESS;
typedef IPX_ADDRESS *LPXNS_ADDRESS;
// ... ETHERNET SOURCE ADDRESS
typedef struct _ETHERNET_SRC_ADDRESS
{
BYTE RoutingBit: 1;
BYTE LocalBit: 1;
BYTE Byte0: 6;
BYTE Reserved[5];
} ETHERNET_SRC_ADDRESS;
typedef ETHERNET_SRC_ADDRESS *LPETHERNET_SRC_ADDRESS;
// ... ETHERNET DESTINATION ADDRESS
typedef struct _ETHERNET_DST_ADDRESS
{
BYTE GroupBit: 1;
BYTE AdminBit: 1;
BYTE Byte0: 6;
BYTE Reserved[5];
} ETHERNET_DST_ADDRESS;
typedef ETHERNET_DST_ADDRESS *LPETHERNET_DST_ADDRESS;
// ... FDDI addresses
typedef ETHERNET_SRC_ADDRESS FDDI_SRC_ADDRESS;
typedef ETHERNET_DST_ADDRESS FDDI_DST_ADDRESS;
typedef FDDI_SRC_ADDRESS *LPFDDI_SRC_ADDRESS;
typedef FDDI_DST_ADDRESS *LPFDDI_DST_ADDRESS;
// .... TOKENRING Source Address
typedef struct _TOKENRING_SRC_ADDRESS
{
BYTE Byte0: 6;
BYTE LocalBit: 1;
BYTE RoutingBit: 1;
BYTE Byte1;
BYTE Byte2: 7;
BYTE Functional: 1;
BYTE Reserved[3];
} TOKENRING_SRC_ADDRESS;
typedef TOKENRING_SRC_ADDRESS *LPTOKENRING_SRC_ADDRESS;
// .... TOKENRING Destination Address
typedef struct _TOKENRING_DST_ADDRESS
{
BYTE Byte0: 6;
BYTE AdminBit: 1;
BYTE GroupBit: 1;
BYTE Reserved[5];
} TOKENRING_DST_ADDRESS;
typedef TOKENRING_DST_ADDRESS *LPTOKENRING_DST_ADDRESS;
//... Old type def's
#define MACADDRESS_SIZE MAC_ADDRESS_SIZE
#define IPADDRESS_SIZE IP_ADDRESS_SIZE
#define IPXADDRESS_SIZE IPX_ADDRESS_SIZE
#define VINESIPADDRESS_SIZE VINES_IP_ADDRESS_SIZE
typedef struct _ADDRESS
{
DWORD Type;
union
{
BYTE MACAddress[MAC_ADDRESS_SIZE];
BYTE IPAddress[IP_ADDRESS_SIZE];
BYTE IPXRawAddress[IPX_ADDRESS_SIZE];
IPX_ADDRESS IPXAddress;
BYTE VinesIPRawAddress[VINES_IP_ADDRESS_SIZE];
VINES_IP_ADDRESS VinesIPAddress;
ETHERNET_SRC_ADDRESS EthernetSrcAddress;
ETHERNET_DST_ADDRESS EthernetDstAddress;
TOKENRING_SRC_ADDRESS TokenringSrcAddress;
TOKENRING_DST_ADDRESS TokenringDstAddress;
FDDI_SRC_ADDRESS FddiSrcAddress;
FDDI_DST_ADDRESS FddiDstAddress;
};
WORD Flags;
} ADDRESS;
typedef ADDRESS *LPADDRESS;
#define ADDRESS_SIZE sizeof(ADDRESS)
#define ADDRESS_TYPE_ETHERNET 0
#define ADDRESS_TYPE_IP 1
#define ADDRESS_TYPE_IPX 2
#define ADDRESS_TYPE_TOKENRING 3
#define ADDRESS_TYPE_FDDI 4
#define ADDRESS_TYPE_XNS 5
#define ADDRESS_TYPE_ANY 6 // NOTE: Special ANY and ANY_GROUP are placeholders, meaning, ignore this type
#define ADDRESS_TYPE_ANY_GROUP 7
#define ADDRESS_TYPE_FIND_HIGHEST 8
#define ADDRESS_TYPE_VINES_IP 9
#define ADDRESS_TYPE_LOCAL_ONLY 10
#define ADDRESSTYPE_FLAGS_NORMALIZE 0x0001
#define ADDRESSTYPE_FLAGS_BIT_REVERSE 0x0002
//=============================================================================
// Address pair.
//=============================================================================
typedef struct _ADDRESSPAIR
{
WORD AddressFlags;
WORD NalReserved;
ADDRESS DstAddress;
ADDRESS SrcAddress;
} ADDRESSPAIR;
typedef ADDRESSPAIR *LPADDRESSPAIR;
#define ADDRESS_FLAGS_MATCH_DST 0x0001 //... Match dest. address.
#define ADDRESS_FLAGS_MATCH_SRC 0x0002 //... Match src. address.
#define ADDRESS_FLAGS_EXCLUDE 0x0004 //... Perform logical XOR vs logical OR.
#define ADDRESS_FLAGS_GROUP_ADDR 0x0008 //... Match group bit only.
#define ADDRESS_FLAGS_MATCH_BOTH 0x0003 //... 0x0001 | 0x0002.
#define ADDRESSPAIR_SIZE sizeof(ADDRESSPAIR)
//=============================================================================
// Address table.
//=============================================================================
#define MAX_ADDRESS_PAIRS 8
typedef struct _ADDRESSTABLE
{
DWORD nAddressPairs;
ADDRESSPAIR AddressPair[MAX_ADDRESS_PAIRS];
} ADDRESSTABLE;
typedef ADDRESSTABLE *LPADDRESSTABLE;
#define ADDRESSTABLE_SIZE sizeof(ADDRESSTABLE)
//=============================================================================
// Network information.
//=============================================================================
typedef struct _NETWORKINFO
{
BYTE PermanentAddr[6]; //... Permanent MAC address
BYTE CurrentAddr[6]; //... Current MAC address
ADDRESS OtherAddress; //... Other address supported (IP, IPX, etc...)
DWORD LinkSpeed; //... Link speed in Mbits.
DWORD MacType; //... Media type.
DWORD MaxFrameSize; //... Max frame size allowed.
DWORD Flags; //... Informational flags.
DWORD TimestampScaleFactor; //... 1 = 1/1 ms, 10 = 1/10 ms, 100 = 1/100 ms, etc.
BYTE NodeName[32]; //... Name of remote workstation.
BYTE Comment[ADAPTER_COMMENT_LENGTH]; // Adapter comment field.
} NETWORKINFO;
typedef NETWORKINFO *LPNETWORKINFO;
#define NETWORKINFO_SIZE sizeof(NETWORKINFO)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -