diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public/sdk/inc/nminsert.h | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to 'public/sdk/inc/nminsert.h')
-rw-r--r-- | public/sdk/inc/nminsert.h | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/public/sdk/inc/nminsert.h b/public/sdk/inc/nminsert.h new file mode 100644 index 000000000..1c0d16b30 --- /dev/null +++ b/public/sdk/inc/nminsert.h @@ -0,0 +1,124 @@ +/*++ + +Copyright (c) 1996 Microsoft Corporation + +Module Name: + + NMInsert.h + +Abstract: + + This header file defines constants types and functions for inserting + frames into a running Netmon capture. + +Author: + + a-flexd 07-09-96 Created. + +Revision History: + + +Mini-DOC: + +Netmon allows a programming interface to insert frames into a running capture. +There are two different ways to do this. You can either used the defined +interfaces in the NMExt API suite to start the capture, define the filter etc, +or you can use the "raw" interface. Using this interface will insert a frame +into EVERY running capture. For example, if you your two different Netmons +running, one on ethernet and one on FDDI, you will get the inserted frame +into both captures. +Calling TransmitSpecialFrame if Netmon is not running is just fine. Nothing +will happen, the data will just be dropped. + +The entry point defined below (TransmitSpecialFrame) is contained in NAL.DLL. +NT4.0 is the first version of NT that contains the entry point, specifically +build 346. + +NOTE NOTE NOTE: You should NOT link to the NAL.LIB to acquire this +functionality. NAL.DLL is not gaurenteed to be installed on a standard NT +machine. Instead use Loadlibrary to acquire the entry point. + +When a frame is inserted, a fake media header and parent protocol is created +for your data. We create a "TRAIL" protocol header that hands off to your +data. The parsing of your data depends on the FRAME_TYPE_ that you specify. +If you specify a known frame type, we will parse it for you. For example, the +FRAME_TYPE_MESSAGE uses a data structure that looks something like this: + + typedef struct _MessageFRAME + { + DWORD dwValue1; + DWORD dwValue2; + CHAR szMessage[]; + } MessageFRAME; + +Just fill out one of these and point to it when you call TransmitSpecialFrame +with the FRAME_TYPE_MESSAGE. +FRAME_TYPE_COMMENT is just an array of printable chars. If you want to make +your own data structure, pick a number above 1000 and use that number as the +FrameType parameter. Note that you must add your number and parser name to +the TRAIL.INI file in the Netmon parsers directory. + +Example: + +setup: + TRANSMITSPECIALFRAME_FN lpfnTransmitSpecialFrame = NULL; + + hInst = LoadLibrary ("NAL.DLL" ); + if (hInst) + lpfnTransmitSpecialFrame = (TRANSMITSPECIALFRAME_FN)GetProcAddress ( hInst, "TransmitSpecialFrame" ); + + if (( hInst==NULL ) || ( lpfnTransmitSpecialFrame==NULL) ) + { + ... + } + +usage: + lpfnTransmitSpecialFrame( FRAME_TYPE_COMMENT, 0, (unsigned char *)pStr, strlen(pStr)+1 ); + + +Contacts: + + Flex Dolphynn (a-FlexD) + Steve Hiskey (SteveHi) + Arthur Brooking (ArthurB) + +--*/ + +#ifndef _INSERTFRAME_ +#define _INSERTFRAME_ + +// VALUES BELOW 100 ARE FOR FUTURE NETMON USE +// VALUES 100 - 1000 ARE FOR INTERNAL MICROSOFT USE +// VALUES ABOVE 1000 ARE FOR USER-DEFINED TYPES + +#define FRAME_TYPE_GENERIC 101 +#define FRAME_TYPE_BOOKMARK 102 +#define FRAME_TYPE_STATISTICS 103 +#define FRAME_TYPE_ODBC 104 +#define FRAME_TYPE_MESSAGE 105 +#define FRAME_TYPE_COMMENT 106 + +// FLAGS FOR INSERTSPECIALFRAME +// THIS FLAG WILL CAUSE THE FRAME IT IS APPLIED TO TO BE SKIPPED AS AN ENDPOINT +// FOR THE GENERATED STATISTICS +#define SPECIALFLAG_SKIPSTAT 0x0001 +// THIS FLAG WILL CAUSE THE GENERATED STATISTICS TO ONLY TAKE +// INTO CONSIDERATION THSE FRAMES WHICH PASS THE CURRENT FILTER +#define SPECIALFLAG_FILTERSTAT 0x0002 + +#ifdef __cplusplus +extern "C" { +#endif + +VOID WINAPI TransmitSpecialFrame( DWORD FrameType, DWORD Flags, LPBYTE pUserData, DWORD UserDataLength); + +// FUNCTION POINTER DEFINITION FOR GETPROCADDRESS +typedef VOID (_stdcall * TRANSMITSPECIALFRAME_FN)(DWORD, DWORD, LPBYTE, DWORD); + +#ifdef __cplusplus +} +#endif + + + +#endif |