This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/bh.h

489 lines
20 KiB
C

//=============================================================================
// Microsoft (R) Bloodhound (tm). Copyright (C) 1991-1998.
//
// MODULE: bh.h
//
// This is the top-level include file for all Bloodhound components.
//=============================================================================
#if !defined(_BH_)
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define _BH_
#include "naltypes.h" //... Network types.
#include "bhsupp.h" //... Supplemental API's.
#include "nal.h" //... Network definitions.
#include "bhtypes.h" //... Type definitions for BH.
#include "bherr.h" //... Error code definitions for BH.
#include "bhfilter.h" //... Filter definitions.
#include "parser.h" //... Parser helper functions and structures.
#include "inilib.h"
#pragma pack(1)
//=============================================================================
// A frame with no number contains this value as its frame number.
//=============================================================================
#define INVALID_FRAME_NUMBER ((DWORD) -1)
//=============================================================================
// Capture file flags.
//=============================================================================
#define CAPTUREFILE_OPEN OPEN_EXISTING
#define CAPTUREFILE_CREATE CREATE_NEW
//=============================================================================
// TRANSMIT API's.
//=============================================================================
extern LPTRANSMITSTATS WINAPI TransmitFrame(HNETWORK hNetwork,
HFRAME hFrame,
DWORD Iterations,
DWORD TimeDelta,
LPDWORD TxCorrelator);
extern LPTRANSMITSTATS WINAPI TransmitCapture(HNETWORK hNetwork,
HCAPTURE hCapture,
DWORD StartingFrameNumber,
DWORD EndingFrameNumber,
DWORD Iterations,
DWORD IterationTimeDelta,
DWORD TimeDelta,
FILTERPROC FilterProc,
LPVOID FilterInstData,
LPDWORD TxCorrelator);
//=============================================================================
// CAPTURE CONTEXT API's.
//=============================================================================
extern DWORD WINAPI StationQuery(DWORD NetworkID,
LPADDRESS DestAddress,
LPQUERYTABLE QueryTable,
HPASSWORD hPassword);
extern HCAPTURE WINAPI CreateCapture(HWND hWnd,
HBUFFER hBuffer,
HPASSWORD hPassword);
extern DWORD WINAPI DestroyCapture(HCAPTURE hCapture);
extern LPVOID WINAPI GetCaptureInstanceData(HCAPTURE hCapture);
extern HADDRESSDB WINAPI GetCaptureAddressDB(HCAPTURE hCapture);
extern LPSYSTEMTIME WINAPI GetCaptureTimeStamp(HCAPTURE hCapture);
extern DWORD WINAPI GetCaptureTotalFrames(HCAPTURE hCapture);
extern HBUFFER WINAPI GetCaptureBuffer(HCAPTURE hCapture);
extern LPSTR WINAPI GetCaptureComment(HCAPTURE hCapture);
extern DWORD WINAPI LoadCapture(HCAPTURE hCapture, LPSTR FileName);
extern DWORD WINAPI SaveCapture(HCAPTURE hCapture,
LPSTR FileName,
LPSTR lpComment,
LPVOID UserData,
DWORD UserDataLength,
FILTERPROC FilterProc,
LPVOID FilterInstData,
DWORD nFirstFrame,
DWORD nLastFrame);
extern LPVOID WINAPI SetCaptureInstanceData(HCAPTURE hCapture, LPVOID InstData);
extern HADDRESSDB WINAPI SetCaptureAddressDB(HCAPTURE hCapture, HADDRESSDB);
//=============================================================================
// FRAME HELP API's.
//=============================================================================
extern BOOL WINAPI ConvertMacAddress(LPADDRESS Address, DWORD NewAddressType);
extern DWORD WINAPI MacTypeToAddressType(DWORD MacType);
extern DWORD WINAPI AddressTypeToMacType(DWORD AddressType);
extern DWORD WINAPI GetFrameDstAddressOffset(HFRAME hFrame, DWORD AddressType, LPDWORD AddressLength);
extern DWORD WINAPI GetFrameSrcAddressOffset(HFRAME hFrame, DWORD AddressType, LPDWORD AddressLength);
extern HCAPTURE WINAPI GetFrameCaptureHandle(HFRAME hFrame);
extern DWORD WINAPI GetFrameDestAddress(HFRAME hFrame,
LPADDRESS lpAddress,
DWORD AddressType,
DWORD Flags);
extern DWORD WINAPI GetFrameSourceAddress(HFRAME hFrame,
LPADDRESS lpAddress,
DWORD AddressType,
DWORD Flags);
extern DWORD WINAPI GetFrameMacHeaderLength(HFRAME hFrame);
extern BOOL WINAPI CompareFrameDestAddress(HFRAME hFrame, LPADDRESS lpAddress);
extern BOOL WINAPI CompareFrameSourceAddress(HFRAME hFrame, LPADDRESS lpAddress);
extern DWORD WINAPI GetFrameLength(HFRAME hFrame);
extern DWORD WINAPI GetFrameStoredLength(HFRAME hFrame);
extern DWORD WINAPI GetFrameMacType(HFRAME hFrame);
extern DWORD WINAPI GetFrameMacHeaderLength(HFRAME hFrame);
extern DWORD WINAPI GetFrameNumber(HFRAME hFrame);
extern LPBYTE WINAPI GetFrameRoutingInformation(HFRAME hFrame, LPDWORD lpRILength);
extern DWORD WINAPI GetFrameTimeStamp(HFRAME hFrame);
extern int WINAPI CompareRawAddresses(LPBYTE Address1, LPBYTE Address2, UINT AddressType);
//=============================================================================
// FRAME API's.
//=============================================================================
extern DWORD WINAPI InsertFrame(HCAPTURE hCapture, HFRAME hFrame, DWORD FrameNumber);
extern DWORD WINAPI DeleteFrame(HCAPTURE hCapture, DWORD FrameNumber);
extern HFRAME WINAPI ModifyFrame(HCAPTURE hCapture,
DWORD FrameNumber,
LPBYTE FrameData,
DWORD FrameLength,
DWORD TimeStamp);
extern HFRAME WINAPI CreateFrame(LPBYTE FrameData, DWORD FrameLength, DWORD TimeStamp);
extern DWORD WINAPI DestroyFrame(HFRAME hFrame);
extern HFRAME WINAPI FindNextFrame(HFRAME hCurrentFrame,
LPSTR ProtocolName,
LPADDRESS lpDesstAddress,
LPADDRESS lpSrcAddress,
LPWORD ProtocolOffset,
DWORD OriginalFrameNumber,
DWORD nHighestFrame);
extern HFRAME WINAPI FindPreviousFrame(HFRAME hCurrentFrame,
LPSTR ProtocolName,
LPADDRESS lpDstAddress,
LPADDRESS lpSrcAddress,
LPWORD ProtocolOffset,
DWORD OriginalFrameNumber,
DWORD nLowestFrame );
extern DWORD WINAPI FrameRecognize(HFRAME hFrame);
extern HCAPTURE WINAPI GetFrameCaptureHandle(HFRAME);
extern HFRAME WINAPI GetFrame(HCAPTURE hCapture, DWORD FrameNumber);
extern LPRECOGNIZEDATATABLE WINAPI GetFrameRecognizeData(HFRAME hFrame);
extern LPBYTE WINAPI LockFrame(HFRAME hFrame);
extern LPPROPERTYTABLE WINAPI LockFrameText(HFRAME hFrame);
extern LPPROPERTYTABLE WINAPI LockFramePropertyTable(HFRAME hFrame);
extern DWORD WINAPI UnlockFrame(HFRAME hFrame);
extern DWORD WINAPI UnlockFrameText(HFRAME hFrame);
extern DWORD WINAPI UnlockFramePropertyTable(HFRAME hFrame);
//=============================================================================
// AddFrame() is a special form of insert frame, it add the frame to
// the end of the current capture.
//=============================================================================
INLINE DWORD WINAPI AddFrame(HCAPTURE hCapture, HFRAME hFrame)
{
return InsertFrame(hCapture, hFrame, INVALID_FRAME_NUMBER);
}
#ifdef DEBUG
extern VOID WINAPI DebugShowLocks(HCAPTURE hCapture);
extern VOID WINAPI DebugGetFrameLocks(HFRAME hFrame, LPDWORD lpLocks, LPDWORD lpPropertyTableLocks);
extern BOOL WINAPI DebugIsRemote(HCAPTURE hCapture);
#endif
//=============================================================================
// Protocol API's.
//=============================================================================
extern HPROTOCOL WINAPI CreateProtocol(LPSTR ProtocolName,
LPENTRYPOINTS lpEntryPoints,
DWORD cbEntryPoints);
extern VOID WINAPI DestroyProtocol(HPROTOCOL hProtocol);
extern DWORD WINAPI DisableProtocol(HCAPTURE hCapture, HPROTOCOL hProtocol);
extern DWORD WINAPI EnableProtocol(HCAPTURE hCapture, HPROTOCOL hProtocol);
extern LPPROTOCOLTABLE WINAPI EnumProtocols(VOID);
extern LPPROTOCOLINFO WINAPI GetProtocolInfo(HPROTOCOL hProtocol);
extern LPSTR WINAPI GetProtocolDLLName(HPROTOCOL hProtocol);
extern HPROPERTY WINAPI GetProperty(HPROTOCOL hProtocol, LPSTR PropertyName);
extern HPROTOCOL WINAPI GetProtocolFromProperty(HPROPERTY hProperty);
extern HPROTOCOL WINAPI GetProtocolFromName(LPSTR ProtocolName);
extern DWORD WINAPI GetProtocolStartOffset(HFRAME hFrame, LPSTR ProtocolName);
extern DWORD WINAPI GetProtocolStartOffsetHandle(HFRAME hFrame, HPROTOCOL hProtocol);
extern LPPROTOCOLTABLE WINAPI GetEnabledProtocols(HCAPTURE hCapture);
extern HPROTOCOL WINAPI GetProtocolFromProtocolID(DWORD dwProtocolID);
extern VOID WINAPI SetMaxAmountOfProtocols(DWORD dwAmountOfProtocols);
extern DWORD WINAPI GetMaxAmountOfProtocols();
//=============================================================================
// Property API's.
//=============================================================================
extern DWORD WINAPI CreatePropertyDatabase(HPROTOCOL hProtocol, DWORD nProperties);
extern DWORD WINAPI DestroyPropertyDatabase(HPROTOCOL hProtocol);
extern HPROPERTY WINAPI AddProperty(HPROTOCOL hProtocol, LPPROPERTYINFO PropertyInfo);
extern LPPROPERTYINST WINAPI AttachPropertyInstance(HFRAME hFrame,
HPROPERTY hProperty,
DWORD Length,
ULPVOID lpData,
DWORD HelpID,
DWORD Level,
DWORD IFlags);
extern LPPROPERTYINST WINAPI AttachPropertyInstanceEx(HFRAME hFrame,
HPROPERTY hProperty,
DWORD Length,
ULPVOID lpData,
DWORD ExLength,
ULPVOID lpExData,
DWORD HelpID,
DWORD Level,
DWORD IFlags);
extern LPPROPERTYINST WINAPI FindPropertyInstance(HFRAME hFrame, HPROPERTY hProperty);
extern LPPROPERTYINFO WINAPI GetPropertyInfo(HPROPERTY hProperty);
extern LPSTR WINAPI GetPropertyText(HFRAME hFrame, LPPROPERTYINST lpPI, LPSTR szBuffer, DWORD BufferSize);
extern INT WINAPI QueryProtocolState(HCAPTURE hCapture, HPROTOCOL hProtocol);
//=============================================================================
// ADDRESS API's.
//=============================================================================
extern LPADDRESSINFO WINAPI AddAddress(HADDRESSDB hAddressDB,
LPADDRESS lpAddress,
LPSTR lpName,
LPVOID InstData);
extern HADDRESSDB WINAPI CreateAddressDatabase(VOID);
extern DWORD WINAPI DeleteAddress(HADDRESSDB hAddressDB, LPADDRESS lpAddressToDelete);
extern DWORD WINAPI DestroyAddressDatabase(HADDRESSDB hAddressDB);
extern DWORD WINAPI EmptyAddressDatabase(HADDRESSDB hAddressDB);
extern LPADDRESSINFO WINAPI GetAddressInfo(HADDRESSDB hAddressDB, LPADDRESS lpAddress);
extern LPADDRESSINFO WINAPI GetAddressInfoByName(HADDRESSDB hAddressDB, LPSTR lpName);
extern LPADDRESSINFOTABLE WINAPI EnumAddresses(HADDRESSDB hAddressDB, int SortByType);
extern LPVOID WINAPI GetAddressDatabaseInstanceData(HADDRESSDB hAddressDB);
extern LPVOID WINAPI SetAddressDatabaseInstanceData(HADDRESSDB hAddressDB, LPVOID InstData);
extern LPADDRESSINFO * WINAPI FindAddressInfoByAddress(LPADDRESSINFOTABLE lpAddressInfoTable, LPADDRESS lpAddress);
extern LPADDRESSINFO * WINAPI FindAddressInfoByName(LPADDRESSINFOTABLE lpAddressInfoTable, LPSTR lpName,
LPADDRESS lpSpecificAddress );
//=============================================================================
// MISC. API's.
//=============================================================================
extern LPSTR WINAPI GetSystemPath(LPSTR Path, DWORD Length);
extern DWORD WINAPI GetCaptureCommentFromFilename(LPSTR lpFilename, LPSTR lpComment, DWORD BufferSize);
extern int WINAPI CompareAddresses(LPADDRESS lpAddress1, LPADDRESS lpAddress2);
extern DWORD WINAPIV FormatPropertyInstance(LPPROPERTYINST lpPropertyInst, ...);
extern SYSTEMTIME * WINAPI AdjustSystemTime(SYSTEMTIME *SystemTime, DWORD TimeDelta);
//=============================================================================
// MISC. API's.
//=============================================================================
extern VOID WINAPI eprintf(LPSTR format, ...);
extern VOID WINAPI CreateErrorLogEntry(VOID);
extern DWORD WINAPI BHGetLastError(VOID);
extern DWORD WINAPI BHSetLastError(DWORD Error);
extern DWORD WINAPI ResetPropertyInstanceLength( LPPROPERTYINST lpProp,
WORD nOrgLen,
WORD nNewLen );
//=============================================================================
// DEBUG API's.
//=============================================================================
#ifdef DEBUG
//=============================================================================
// BreakPoint() macro.
//=============================================================================
#ifdef _X86_
#define BreakPoint() _asm { int 3h }
#else
#define BreakPoint() DebugBreak()
#endif
//=============================================================================
// FUNCTION: BhAssert()
//=============================================================================
INLINE VOID BhAssert(
LPVOID assert,
LPSTR file,
UINT line,
LPVOID msg
)
{
if ( msg == NULL )
{
dprintf("ASSERT -- %s occured on line %u of file %s.\n",
assert,
line,
file);
}
else
{
dprintf("ASSERT -- %s occured on line %u of file %s: Message = %s.\n",
assert,
line,
file,
msg);
}
}
//=============================================================================
// MACRO: ASSERT()
//=============================================================================
#define ASSERT(exp) \
{ \
if ( !(exp) ) \
{ \
BhAssert(#exp, __FILE__, __LINE__, NULL); \
BreakPoint(); \
} \
} \
#define ASSERTMSG(exp, msg) \
{ \
if ( !(exp) ) \
{ \
BhAssert(#exp, __FILE__, __LINE__, msg); \
BreakPoint(); \
} \
} \
#else //... DEBUG
#define ASSERT(exp)
#define ASSERTMSG(exp, msg)
#define ASSERT_DWORD_ALIGNMENT(p) (p)
#endif //... DEBUG
//=============================================================================
// PanicPoint().
//=============================================================================
extern VOID WINAPI PanicMessage(UINT line, LPSTR file, LPSTR msg);
#ifdef DEBUG
#define PanicPoint() \
{ \
PanicMessage(__LINE__, __FILE__, NULL); \
BreakPoint(); \
}
#else
#define PanicPoint() \
{ \
PanicMessage(__LINE__, __FILE__, NULL); \
}
#endif
//=============================================================================
// Alignment macro.
//=============================================================================
#ifndef _X86_
#ifdef DEBUG
INLINE LPVOID WINAPI ASSERT_DWORD_ALIGNMENT(LPVOID p)
{
if ( (((DWORD) (p)) & 0x00000003) != 0 )
{
dprintf("Fatal error on line %u of %s. Pointer is not DWORD aligned.", __LINE__, __FILE__);
BreakPoint();
}
return p;
}
#endif
#else
#define ASSERT_DWORD_ALIGNMENT(p) (p)
#endif
#pragma pack()
#pragma option pop /*P_O_Pop*/
#endif