File:  [OS/2 SDKs] / pmsdk / samples / spy / spyhook.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Thu Aug 9 12:28:21 2018 UTC (7 years, 9 months ago) by root
Branches: msft, MAIN
CVS tags: pmsdk-1989, HEAD
Microsoft OS/2 SDK PM 02-24-1989

#include <selector.h>

/* Maximum HWNDS, we will watch */
#define MAXHWNDS    100
#define MAXMSGCNT   50  /* size of Message queue */
#define MAXSTRACE   5   /* Max number of levels we will traceback */
#define CALLSTOSKIP 3   /* How many levels of calls to skip */

/*
 * Define message structure for spy to hold
 */
typedef struct _QMSGSPY {
    USHORT      fs;         /* Flags */
    QMSG        qmsg;       /* The message */
    SHORT       cbDataMP1;  /* Num extra bytes of information for MP1 */
    SHORT       cbDataMP2;  /* Num extra bytes of information for MP2 */
    PID         pidSend;    /* Process ID of the sender */
    TID         tidSend;    /* Thread ID of the sender */
    PVOID       pvoidStack[MAXSTRACE];  /* Stack trace for send messages */
    UCHAR       *rgData;    /* Pointer to additional information for message */
    UCHAR       bMPType;    /* Type of message information retrieved */
} QMSGSPY;

typedef QMSGSPY FAR *PQMSGSPY;


/* Define the HOOKS options word bits */
#define SPYH_INPUT      0x0001
#define SPYH_SENDMSG    0x0002
#define SPYH_JOURNALR   0x0004

/*
 * Define the types of data that the hook will return for message types
 * Note: We have a max of 8 types each for MP1 and MP2 and that currently
 * can be defined with a Byte for each message
 */
#define MPT_NORMAL      0x00
#define MPT_SWP         0x01
#define MPT_RECTL       0x02
#define MPT_WNDPRMS     0x03
#define MPT_QMSG        0x04
#define MP_ENABLED      0x80

#define MP_MASK         0x07

#define MPTS(mp1,mp2)   ((UCHAR)mp2 << 3 | (UCHAR)mp1)

#define MAXMSGFILTER    	0x0300	/* User message */
#define MAXMSGFILTERBYTES	0x0300

/* SPYHOOK library API functions */
BOOL FAR PASCAL SpyInstallHook( HAB, HMQ, USHORT);
BOOL FAR PASCAL SpyReleaseHook( BOOL );
BOOL FAR PASCAL SpyHookOnOrOff( BOOL);
BOOL FAR PASCAL SpySetWindowList(SHORT, HWND FAR *);
SHORT FAR PASCAL SpyGetWindowList(SHORT, HWND FAR *);
BOOL FAR PASCAL SpySetQueueList(SHORT, HMQ FAR *);
SHORT FAR PASCAL SpyGetQueueList(SHORT, HMQ FAR *);
BOOL FAR PASCAL SpySetMessageList(UCHAR FAR *, BOOL);
BOOL FAR PASCAL SpyFWindowInList(HWND, BOOL);
BOOL FAR PASCAL SpySetAllFrameOpt(BOOL);
BOOL FAR PASCAL SpySetAllWindowOpt (BOOL);

BOOL FAR PASCAL SpyGetNextMessage(PQMSGSPY, CHAR FAR *, SHORT, LONG);

/* API's For trying to get info symbol information from other PID */
BOOL FAR PASCAL SpySetLNSymbolPID(PID, USHORT);
int  FAR PASCAL SpyGetLNSymbolSelector(PWHOISINFO);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.