📄 bhtypes.h
字号:
//=============================================================================
// Microsoft (R) Bloodhound (tm). Copyright (C) 1991-1992.
//
// MODULE: bhTypes.h
//
// This is the top-level include file for all Bloodhound struct definitions.
//=============================================================================
#if !defined(_BHTYPE_)
#define _BHTYPE_
#pragma pack(1)
//=============================================================================
// Unaligned base type definitions.
//=============================================================================
typedef VOID UNALIGNED *ULPVOID;
typedef BYTE UNALIGNED *ULPBYTE;
typedef WORD UNALIGNED *ULPWORD;
typedef DWORD UNALIGNED *ULPDWORD;
typedef CHAR UNALIGNED *ULPSTR;
typedef SYSTEMTIME UNALIGNED *ULPSYSTEMTIME;
//=============================================================================
// Handle definitions.
//=============================================================================
typedef struct _PARSER *HPARSER;
typedef struct _FRAMEDESC *HFRAME;
typedef struct _CAPTURE *HCAPTURE;
typedef struct _FILTER *HFILTER;
typedef struct _ADDRESSDB *HADDRESSDB;
typedef struct _PROTOCOL *HPROTOCOL;
typedef DWORD HPROPERTY;
typedef HPROTOCOL *LPHPROTOCOL;
//=============================================================================
// GetTableSize() -- The following macro is used to calculate the actual
// length of Bloodhound variable-length table structures.
//
// EXAMPLE:
//
// GetTableSize(PROTOCOLTABLESIZE, ProtocolTable->nProtocols, sizeof(HPROTOCOL))
//=============================================================================
#define GetTableSize(TableBaseSize, nElements, ElementSize) ((TableBaseSize) + ((nElements) * (ElementSize)))
//=============================================================================
// Object type identifiers.
//=============================================================================
typedef DWORD OBJECTTYPE;
#ifndef MAKE_IDENTIFIER
#define MAKE_IDENTIFIER(a, b, c, d) ((DWORD) MAKELONG(MAKEWORD(a, b), MAKEWORD(c, d)))
#endif
#define HANDLE_TYPE_INVALID MAKE_IDENTIFIER(-1, -1, -1, -1)
#define HANDLE_TYPE_CAPTURE MAKE_IDENTIFIER('C', 'A', 'P', '$')
#define HANDLE_TYPE_PARSER MAKE_IDENTIFIER('P', 'S', 'R', '$')
#define HANDLE_TYPE_ADDRESSDB MAKE_IDENTIFIER('A', 'D', 'R', '$')
#define HANDLE_TYPE_PROTOCOL MAKE_IDENTIFIER('P', 'R', 'T', '$')
#define HANDLE_TYPE_BUFFER MAKE_IDENTIFIER('B', 'U', 'F', '$')
//=============================================================================
// Bloodhound constant definitions.
//=============================================================================
#define INLINE __inline
#define BHAPI WINAPI
#define MAX_NAME_LENGTH 16
#define MAX_ADDR_LENGTH 6
//=============================================================================
// Ethernet type (ETYPE) constant definitions.
//=============================================================================
#define ETYPE_LOOP 0x9000
#define ETYPE_3COM_NETMAP1 0x9001
#define ETYPE_3COM_NETMAP2 0x9002
#define ETYPE_IBM_RT 0x80D5
#define ETYPE_NETWARE 0x8137
#define ETYPE_XNS1 0x0600
#define ETYPE_XNS2 0x0807
#define ETYPE_3COM_NBP0 0x3C00
#define ETYPE_3COM_NBP1 0x3C01
#define ETYPE_3COM_NBP2 0x3C02
#define ETYPE_3COM_NBP3 0x3C03
#define ETYPE_3COM_NBP4 0x3C04
#define ETYPE_3COM_NBP5 0x3C05
#define ETYPE_3COM_NBP6 0x3C06
#define ETYPE_3COM_NBP7 0x3C07
#define ETYPE_3COM_NBP8 0x3C08
#define ETYPE_3COM_NBP9 0x3C09
#define ETYPE_3COM_NBP10 0x3C0A
#define ETYPE_IP 0x0800
#define ETYPE_ARP1 0x0806
#define ETYPE_ARP2 0x0807
#define ETYPE_RARP 0x8035
#define ETYPE_TRLR0 0x1000
#define ETYPE_TRLR1 0x1001
#define ETYPE_TRLR2 0x1002
#define ETYPE_TRLR3 0x1003
#define ETYPE_TRLR4 0x1004
#define ETYPE_TRLR5 0x1005
#define ETYPE_PUP 0x0200
#define ETYPE_PUP_ARP 0x0201
#define ETYPE_APPLETALK_ARP 0x80F3
#define ETYPE_APPLETALK_LAP 0x809B
#define ETYPE_SNMP 0x814C
//=============================================================================
// LLC (802.2) SAP constant definitions.
//=============================================================================
#define SAP_SNAP 0xAA
#define SAP_BPDU 0x42
#define SAP_IBM_NM 0xF4
#define SAP_IBM_NETBIOS 0xF0
#define SAP_SNA1 0x04
#define SAP_SNA2 0x05
#define SAP_SNA3 0x08
#define SAP_SNA4 0x0C
#define SAP_NETWARE1 0x10
#define SAP_NETWARE2 0xE0
#define SAP_NETWARE3 0xFE
#define SAP_IP 0x06
#define SAP_X25 0x7E
#define SAP_RPL1 0xF8
#define SAP_RPL2 0xFC
#define SAP_UB 0xFA
#define SAP_XNS 0x80
//=============================================================================
// Property constants
//=============================================================================
// data types
#define PROP_TYPE_VOID 0x00
#define PROP_TYPE_SUMMARY 0x01
#define PROP_TYPE_BYTE 0x02
#define PROP_TYPE_WORD 0x03
#define PROP_TYPE_DWORD 0x04
#define PROP_TYPE_LARGEINT 0x05
#define PROP_TYPE_ADDR 0x06
#define PROP_TYPE_TIME 0x07
#define PROP_TYPE_STRING 0x08
#define PROP_TYPE_IP_ADDRESS 0x09
#define PROP_TYPE_IPX_ADDRESS 0x0A
#define PROP_TYPE_BYTESWAPPED_WORD 0x0B
#define PROP_TYPE_BYTESWAPPED_DWORD 0x0C
#define PROP_TYPE_TYPED_STRING 0x0D
#define PROP_TYPE_RAW_DATA 0x0E
#define PROP_TYPE_COMMENT 0x0F
#define PROP_TYPE_SRCFRIENDLYNAME 0x10
#define PROP_TYPE_DSTFRIENDLYNAME 0x11
#define PROP_TYPE_TOKENRING_ADDRESS 0x12
#define PROP_TYPE_FDDI_ADDRESS 0x13
#define PROP_TYPE_ETHERNET_ADDRESS 0x14
#define PROP_TYPE_OBJECT_IDENTIFIER 0x15
#define PROP_TYPE_VINES_IP_ADDRESS 0x16
#define PROP_TYPE_VAR_LEN_SMALL_INT 0x17
// data qualifiers
#define PROP_QUAL_NONE 0x00
#define PROP_QUAL_RANGE 0x01
#define PROP_QUAL_SET 0x02
#define PROP_QUAL_BITFIELD 0x03
#define PROP_QUAL_LABELED_SET 0x04
#define PROP_QUAL_LABELED_BITFIELD 0x08
#define PROP_QUAL_CONST 0x09
#define PROP_QUAL_FLAGS 0x0A
#define PROP_QUAL_ARRAY 0x0B
//=============================================================================
// LARGEINT structure defined in winnt.h
//=============================================================================
//typedef struct _LARGEINT
//{
// ULONG LowLong;
// LONG HighLong;
//} LARGEINT;
//
typedef LARGE_INTEGER *LPLARGEINT;
typedef LARGE_INTEGER UNALIGNED *ULPLARGEINT;
//=============================================================================
// Range structure.
//=============================================================================
typedef struct _RANGE
{
DWORD MinValue;
DWORD MaxValue;
} RANGE;
typedef RANGE *LPRANGE;
//=============================================================================
// LABELED_BYTE structure
//=============================================================================
typedef struct _LABELED_BYTE
{
BYTE Value;
LPSTR Label;
} LABELED_BYTE;
typedef LABELED_BYTE *LPLABELED_BYTE;
//=============================================================================
// LABELED_WORD structure
//=============================================================================
typedef struct _LABELED_WORD
{
WORD Value;
LPSTR Label;
} LABELED_WORD;
typedef LABELED_WORD *LPLABELED_WORD;
//=============================================================================
// LABELED_DWORD structure
//=============================================================================
typedef struct _LABELED_DWORD
{
DWORD Value;
LPSTR Label;
} LABELED_DWORD;
typedef LABELED_DWORD *LPLABELED_DWORD;
//=============================================================================
// LABELED_LARGEINT structure
//=============================================================================
typedef struct _LABELED_LARGEINT
{
LARGE_INTEGER Value;
LPSTR Label;
} LABELED_LARGEINT;
typedef LABELED_LARGEINT *LPLABELED_LARGEINT;
//=============================================================================
// LABELED_SYSTEMTIME structure
//=============================================================================
typedef struct _LABELED_SYSTEMTIME
{
SYSTEMTIME Value;
LPSTR Label;
} LABELED_SYSTEMTIME;
typedef LABELED_SYSTEMTIME *LPLABELED_SYSTEMTIME;
//=============================================================================
// LABELED_BIT structure
//=============================================================================
typedef struct _LABELED_BIT
{
BYTE BitNumber; //... Bit number (starts at 0, upto 256 bits).
LPSTR LabelOff; //... Label for bit = 0
LPSTR LabelOn; //... Label for bit = 1
} LABELED_BIT;
typedef LABELED_BIT *LPLABELED_BIT;
//=============================================================================
// TYPED_STRING structure
//=============================================================================
#define TYPED_STRING_NORMAL 1
#define TYPED_STRING_UNICODE 2
#define TYPED_STRING_EXFLAG 1
typedef struct _TYPED_STRING
{
BYTE StringType:7; // defined above
BYTE fStringEx:1; // we are always Ex... so this is how we ExEx
LPSTR lpString; // the actual string
BYTE Byte[0]; // if instEx, then the data would go here.
} TYPED_STRING;
typedef TYPED_STRING *LPTYPED_STRING;
//=============================================================================
// OBJECT_IDENTIFIER structure
//=============================================================================
typedef struct _OBJECT_IDENTIFIER
{
DWORD Length; // Number of identifiers in the OID
LPDWORD lpIdentifier; // Array of Identifiers
} OBJECT_IDENTIFIER;
typedef OBJECT_IDENTIFIER *LPOBJECT_IDENTIFIER;
//=============================================================================
// Set structure.
//=============================================================================
typedef struct _SET
{
DWORD nEntries;
union
{
//... set of values
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -