⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 naltypes.h

📁 希望我上传的这些东西可以对搞编程的程序员有点小小的帮助!谢谢!
💻 H
📖 第 1 页 / 共 3 页
字号:
} 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 + -