📄 naltypes.h
字号:
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
//=============================================================================
// Microsoft (R) Bloodhound. Copyright (C) 1991-1994.
//
// MODULE: naltypes.h
//
// This source file contains defintions for the Network Abstraction Layer (NAL).
//
// NOTE: Do not make changes to this file unless you mahe changes to the
// NDIS 2.0 driver header files. There are masm equivalents to change.
//=============================================================================
#include "buffer.h" //... Include buffer definitions.
#include "bherr.h" //... Bloodhound error codes.
#include "neterr.h" //... Network Topology error codes
#ifdef __BORLANDC__
#include "wqueue.h" //... Queuing functions.
#else
#include "queue.h" //... Queuing functions.
#endif
#if !defined(_NALTYPES_)
#define _NALTYPES_
#pragma pack(1)
//=============================================================================
// NETWORK_MESSAGE_TRIGGER_COMPLETE:
//
// param1 = Trigger structure.
// param2 = Nothing.
//=============================================================================
#define NETWORK_MESSAGE_TRIGGER_COMPLETE 0
//=============================================================================
// NETWORK_MESSAGE_TRANSMIT_COMPLETE:
//
// param1 = Transmit statistics.
// param2 = Packet queue.
//=============================================================================
#define NETWORK_MESSAGE_TRANSMIT_COMPLETE 1
//=============================================================================
// NETWORK_MESSAGE_RESET_STATE:
//
// param1 = RESET_COMPLETE reset, current net handle now invalid
// RESET_OPEN reset, current net handle still valid
// param2 = Packet queue.
//=============================================================================
#define NETWORK_MESSAGE_RESET_STATE 2
#define RESET_COMPLETE 0
#define RESET_OPEN 1
//=============================================================================
// NETWORK_MESSAGE_BH_ERROR
//
// param1 = BHERR ERROR CODE
// param2 = LPSTR Description (optional pointer to description of error)
//=============================================================================
#define NETWORK_MESSAGE_BH_ERROR 3
//=============================================================================
// NETWORK_MESSAGE_NETWORK_ERROR
//
// param1 = MacType (EtherNet, TokenRing, FDDI, etc.)
// param2 = NETERR_ error code (specific to topology)
//=============================================================================
#define NETWORK_MESSAGE_NETWORK_ERROR 4
//=============================================================================
// The network handle.
//=============================================================================
#ifndef MAKE_IDENTIFIER
#define MAKE_IDENTIFIER(a, b, c, d) ((DWORD) MAKELONG(MAKEWORD(a, b), MAKEWORD(c, d)))
#endif
typedef struct _NETWORK *HNETWORK;
#define HANDLE_TYPE_NETWORK MAKE_IDENTIFIER('N', 'E', 'T', '$')
//=============================================================================
// NETWORKSTATE data structure.
//=============================================================================
typedef struct _NETWORKSTATUS
{
DWORD State; //... Current state.
DWORD Flags; //... Current flags.
DWORD TriggerAction; //... Trigger action.
DWORD TriggerOpcode; //... Trigger opcode.
DWORD TriggerState; //... Trigger state.
DWORD BufferSize; //... Capture buffer size.
} NETWORKSTATUS;
typedef NETWORKSTATUS *LPNETWORKSTATUS;
#define NETWORKSTATUS_SIZE sizeof(NETWORKSTATUS)
#define NETWORKSTATUS_STATE_VOID 0 //... Nothing state.
#define NETWORKSTATUS_STATE_INIT 1 //... Initial state.
#define NETWORKSTATUS_STATE_READY 2 //... Ready state.
#define NETWORKSTATUS_STATE_CAPTURING 3 //... Capturing state.
#define NETWORKSTATUS_STATE_PAUSED 4 //... Paused state.
#define NETWORKSTATUS_FLAGS_TRIGGER_PENDING 0x0001 //... Trigger pending.
//=============================================================================
// General constants.
//=============================================================================
#define MAC_TYPE_UNKNOWN 0 //... not supported
#define MAC_TYPE_ETHERNET 1 //... ethernet and 802.3
#define MAC_TYPE_TOKENRING 2 //... tokenring (802.5)
#define MAC_TYPE_FDDI 3 //... fddi.
#define MACHINE_NAME_LENGTH 16
#define USER_NAME_LENGTH 32
#define ADAPTER_COMMENT_LENGTH 32
#define CLOSE_FLAGS_CLOSE 0x0000
#define CLOSE_FLAGS_SUSPEND 0x0001
//=============================================================================
// NAL error codes.
//=============================================================================
#define NAL_SUCCESS BHERR_SUCCESS
#define NAL_INVALID_NETWORK_ID BHERR_INVALID_NETWORK_ID
#define NAL_INVALID_HNETCONTEXT BHERR_INVALID_HNETWORK
#define NAL_OUT_OF_MEMORY BHERR_OUT_OF_MEMORY
#define NAL_NETWORK_BUSY BHERR_NETWORK_BUSY
#define NAL_INVALID_HBUFFER BHERR_INVALID_HBUFFER
#define NAL_INVALID_PACKET_LENGTH BHERR_INVALID_PACKET_LENGTH
#define NAL_TRANSMIT_ERROR BHERR_TRANSMIT_ERROR
#define NAL_CAPTURE_PAUSED BHERR_CAPTURE_PAUSED
#define NAL_CAPTURE_NOT_PAUSED BHERR_CAPTURE_NOT_PAUSED
#define NAL_CAPTURE_STARTED BHERR_CAPTURING
#define NAL_CAPTURE_NOT_STARTED BHERR_NOT_CAPTURING
#define NAL_MSDOS_DRIVER_NOT_LOADED BHERR_MSDOS_DRIVER_NOT_LOADED
#define NAL_WINDOWS_DRIVER_NOT_LOADED BHERR_WINDOWS_DRIVER_NOT_LOADED
#define NAL_MSDOS_DRIVER_INIT_FAILURE BHERR_MSDOS_DRIVER_INIT_FAILURE
#define NAL_WINDOWS_DRIVER_INIT_FAILURE BHERR_WINDOWS_DRIVER_INIT_FAILURE
#define NAL_PROMISCUOUS_MODE_NOT_SUPPORTED BHERR_PROMISCUOUS_MODE_NOT_SUPPORTED
#define NAL_MAC_DRIVER_OPEN_FAILURE BHERR_MAC_DRIVER_OPEN_FAILURE
#define NAL_PENDING BHERR_PENDING
#define NAL_INTERNAL_EXCEPTION BHERR_INTERNAL_EXCEPTION
//=============================================================================
// Trigger codes.
//=============================================================================
#define TRIGGER_OFF 0
#define TRIGGER_ON_PATTERN_MATCH 1
#define TRIGGER_ON_BUFFER_CONTENT 2
#define TRIGGER_ON_PATTERN_MATCH_THEN_BUFFER_CONTENT 3
#define TRIGGER_ON_BUFFER_CONTENT_THEN_PATTERN_MATCH 4
#define TRIGGER_STATE_NOTHING 0
#define TRIGGER_STATE_STOP_CAPTURE 1
#define TRIGGER_STATE_PAUSE_CAPTURE 2
#define TRIGGER_ACTION_NOTIFY 0
#define TRIGGER_ACTION_EXECUTE_COMMAND 1
//=============================================================================
// Handle defintions.
//=============================================================================
typedef LPVOID HNETCONTEXT;
//=============================================================================
// Transmit statistics structure.
//=============================================================================
typedef struct _TRANSMITSTATS
{
DWORD TotalFramesSent;
DWORD TotalBytesSent;
DWORD TotalTransmitErrors;
} TRANSMITSTATS;
typedef TRANSMITSTATS *LPTRANSMITSTATS;
#define TRANSMITSTATS_SIZE sizeof(TRANSMITSTATS)
//=============================================================================
// Statistics structure.
//=============================================================================
typedef struct _STATISTICS
{
//=========================================================================
// Statistics kept by BH driver.
//=========================================================================
DWORD TimeElapsed;
//... Buffered statistics
DWORD TotalFramesCaptured;
DWORD TotalBytesCaptured;
//... Filtered statistics
DWORD TotalFramesFiltered;
DWORD TotalBytesFiltered;
//... Overall statistics.
DWORD TotalFramesSeen;
DWORD TotalBytesSeen;
DWORD TotalMulticastsReceived;
DWORD TotalBroadcastsReceived;
DWORD TotalFramesDropped;
DWORD TotalFramesDroppedFromBuffer;
//=========================================================================
// Statistics kept by MAC driver.
//=========================================================================
DWORD MacFramesReceived;
DWORD MacCRCErrors;
union
{
DWORD MacBytesReceived;
LARGE_INTEGER MacBytesReceivedEx;
};
DWORD MacFramesDropped_NoBuffers;
DWORD MacMulticastsReceived;
DWORD MacBroadcastsReceived;
DWORD MacFramesDropped_HwError;
} STATISTICS;
typedef STATISTICS *LPSTATISTICS;
#define STATISTICS_SIZE sizeof(STATISTICS)
//=============================================================================
// Protocol statistics structure.
//=============================================================================
typedef struct _PROTOCOLSTAT
{
DWORD ProtocolID;
DWORD ProtocolFramesCaptured;
DWORD ProtocolBytesCaptured;
} PROTOCOLSTAT;
typedef PROTOCOLSTAT *LPPROTOCOLSTAT;
#define PROTOCOLSTAT_SIZE sizeof(PROTOCOLSTAT)
typedef struct _PROTOCOL_STATISTICS_TABLE
{
DWORD nProtocols;
LPPROTOCOLSTAT ProtocolStatistic;
} PROTOCOL_STATISTICS_TABLE;
typedef PROTOCOL_STATISTICS_TABLE *LPPROTOCOL_STATISTICS_TABLE;
#define PROTOCOL_STATISTIC_TABLE_SIZE sizeof(PROTOCOL_STATISTICS_TABLE)
//=============================================================================
// Packet data structure.
//=============================================================================
typedef struct _PACKET *LPPACKET;
typedef struct _PACKET
{
LPBYTE Frame; //... Pointer to entire MAC frame.
LPVOID FrameMdl; //... Driver-level frame pointer.
WORD FrameSize; //... Length of frame.
WORD ReferenceCount; //... Number of frame references (lock count).
DWORD TimeStamp; //... Timestamp of frame.
} PACKET;
#define PACKET_SIZE sizeof(PACKET)
//=============================================================================
// StatFrame type.
//=============================================================================
typedef struct _FRAMEHDR
{
BYTE SrcAddress[6];
BYTE DstAddress[6];
WORD Length;
BYTE DSAP;
BYTE SSAP;
BYTE Control;
BYTE ProtocolID[3];
WORD EtherType;
} FRAMEHDR;
typedef struct _TRFRAMEHDR
{
BYTE AC;
BYTE FC;
BYTE SrcAddress[6];
BYTE DstAddress[6];
BYTE DSAP;
BYTE SSAP;
BYTE Control;
BYTE ProtocolID[3];
WORD EtherType;
} TRFRAMEHDR;
#define DEFAULT_AC 0x00
#define DEFAULT_FC 0x40
#define DEFAULT_SAP 0xAA
#define DEFAULT_CONTROL 0x03
#define DEFAULT_ETHERTYPE 0x8419
typedef struct _FDDIFRAMEHDR
{
BYTE FC;
BYTE SrcAddress[6];
BYTE DstAddress[6];
BYTE DSAP;
BYTE SSAP;
BYTE Control;
BYTE ProtocolID[3];
WORD EtherType;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -