⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdwin.h

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 H
字号:
/****************************************************************************
*
*                            Open Watcom Project
*
*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
*  ========================================================================
*
*    This file contains Original Code and/or Modifications of Original
*    Code as defined in and that are subject to the Sybase Open Watcom
*    Public License version 1.0 (the 'License'). You may not use this file
*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
*    provided with the Original Code and Modifications, and is also
*    available at www.sybase.com/developer/opensource.
*
*    The Original Code and all software distributed under the License are
*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
*    NON-INFRINGEMENT. Please see the License for the specific language
*    governing rights and limitations under the License.
*
*  ========================================================================
*
* Description:  WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
*               DESCRIBE IT HERE!
*
****************************************************************************/


#define _WINDOWS_16_
#include <windows.h>
#include <toolhelp.h>
#include "trpimp.h"
#include "trperr.h"
#include "packet.h"

#define MAGIC_COOKIE    0x66600666L
typedef enum {
    FAULT_HIT,
    START_BP_HIT,
    TASK_LOADED,
    TASK_ENDED,
    ASYNCH_STOP,
    OUT_STR,
    GET_CHAR,
    DLL_LOAD,
    DLL_LOAD32,
} private_msg;

typedef enum {
    ACTIVE,
    WAITING_FOR_TASK_LOAD,
    LOADING_DEBUGEE,
    WAITING_FOR_BREAKPOINT,
    RUNNING_DEBUGEE,
    GOING_TO_32BIT_START,
    RELEASE_DEBUGEE,
    KILLING_DEBUGEE
} debugger_state;

typedef enum {
    KILL_APP=0,
    RESTART_APP,
    CHAIN,
    RUN_REDIRECT,
    ACCESS_SEGMENT
} restart_opts;

#define TRACE_BIT       0x100
#define NIL_HANDLE      -1

#define MAX_STR 512

typedef struct {
    addr48_ptr  loc;
    WORD                segment_number;
    char                value;
    char                hard_mode:1;
    char                in_use:1;
} break_point;

#define SIG_OFF         0
#define SIG_SIZE        4
#define Align4K( x ) (((x)+0xfffL) & ~0xfffL )

struct fp_state {
    unsigned char fp[108];
};

/*
 * global variables
 */
extern BYTE                     DLLLoadSaveByte;
extern WORD                     DLLLoadCS;
extern WORD                     DLLLoadIP;
extern BOOL                     DLLLoadExpectingInt1;
extern WORD                     CopySize;
extern unsigned_8               FPUType;
extern HWND                     DesktopWindow;
extern HINSTANCE                Instance;
extern HTASK                    DebuggerTask;
extern HTASK                    DebugeeTask;
extern HINSTANCE                DebugeeInstance;
extern DWORD                    WindowsFlags;
extern struct interrupt_struct  IntResult;
extern struct fp_state          FPResult;
extern volatile debugger_state  DebuggerState;
extern const char __based(__segname("_CONST")) ExtensionList[];
extern break_point              StopNewTask;
extern DWORD                    SystemDebugState;
extern volatile restart_opts    AppMessage;
extern DWORD                    TerminateCSIP;
extern HWND                     DebuggerWindow;
extern int                      ModuleTop;
extern int                      CurrentModule;
extern BOOL                     FaultHandlerEntered;
extern int                      SaveStdIn;
extern int                      SaveStdOut;
extern BOOL                     WDebug386;
extern WORD                     WPCount;
extern HANDLE                   DebugeeModule;
extern WORD                     WasInt32;
extern void                     (FAR PASCAL *DoneWithInterrupt)( LPVOID );
extern int                      (FAR PASCAL *GetDebugInterruptData)( LPVOID );
extern void                     (FAR PASCAL *ResetDebugInterrupts32)( void );
extern int                      (FAR PASCAL *SetDebugInterrupts32)( void );
extern void                     (FAR PASCAL *DebuggerIsExecuting)( int );
extern BOOL                     DebugDebugeeOnly;
extern HANDLE                   TaskAtFault;
extern WORD                     Win386Sig[];
extern WORD                     Win386SigRev[];
extern FARPROC                  SubClassProcInstance;
extern WORD                     HardModeRequired;
extern BOOL                     InputLocked;
extern WORD                     ForceHardMode;
extern BOOL                     InSoftMode;
extern WORD                     CSAlias;
extern WORD                     SegmentToAccess;
extern BOOL                     PendingTrap;
extern LPVOID                   HookRtn;
extern BOOL                     IsRFX;
extern char                     OutBuff[MAX_STR];
extern int                      OutPos;
extern BOOL                     StopOnExtender;
extern BOOL                     LoadingDebugee;
extern BOOL                     TraceOn;
extern BOOL                     Debugging32BitApp;

/*
 * function prototypes
 */
/* accbrwat.c */
BOOL IsOurBreakpoint( WORD sel, DWORD off );
void ResetBreakpoints( WORD sel );
BOOL SetDebugRegs( void );
void ClearDebugRegs( void );
DWORD GetDR6( void );
BOOL CheckWatchPoints( void );

/* asyhook.c */
extern void InitASynchHook( void );
extern void FiniASynchHook( void );
extern void HandleAsynch( void );

/* accmap.c */
void AddModuleLoaded( HANDLE mod, BOOL );
void AddDebugeeModule( void );
void AddAllCurrentModules( void );
BOOL HasSegAliases( void );

/* accmisc.c */
BOOL IsSegSize32( WORD seg );

/* accredir.c */
void ExecuteRedirect( void );

/* accrun.c */
void SingleStepMode( void );

/* dbgeemsg.c */
void EnterSoftMode( void );
void ExitSoftMode( void );
//long FAR PASCAL SubClassProc( HWND hwnd, unsigned message, WORD wparam, LONG lparam );
DWORD FAR PASCAL DebugHook( int ncode, WORD wparam, DWORD lparam );
restart_opts DebugeeWaitForMessage( void );

/* dbghook.c */
void FiniDebugHook( void );
void InitDebugHook( void );

/* dbgrmsg.c */
private_msg DebuggerWaitForMessage( debugger_state state, HANDLE task, WORD dbgeemsg );
BOOL ToDebugger( private_msg pmsg );

/* getsaddr.c */
BOOL GetStartAddress( char *path, addr48_ptr *res );

/* initfini.c */
char *InitDebugging( void );
void FinishDebugging( void );

/* int.asm */
void FAR PASCAL IntHandler( void );

/* mem.c */
DWORD WriteMem( WORD sel, DWORD off, LPVOID buff, DWORD size );
DWORD ReadMem( WORD sel, DWORD off, LPVOID buff, DWORD size );

/* misc.asm */
#pragma aux _CopyMemory parm [cx] [dx di] [ax] [si bx] value[ax];
extern short _CopyMemory( WORD, DWORD, WORD, DWORD );

/* notify.c */
BOOL FAR PASCAL NotifyHandler( WORD id, DWORD data );
void FAR PASCAL UnLockInput( void );

/* wgod.c */
short CopyMemory( WORD dseg, DWORD doff, WORD sseg, DWORD soff, short size );
void StartWDebug386( void );
void KillWDebug386( void );
#ifdef DEBUG
#define OUT_BREAK       0x0001
#define OUT_ERR         0x0002
#define OUT_HOOK        0x0004
#define OUT_INIT        0x0008
#define OUT_LOAD        0x0010
#define OUT_MAP         0x0020
#define OUT_MSG         0x0040
#define OUT_REQ         0x0080
#define OUT_RUN         0x0100
#define OUT_SOFT        0x0200
#define OUT_TEMP        0x0400
extern void MyOut( unsigned f, char *, ... );
extern void MyClearScreen( void );
#define Out( a ) MyOut a
#define ClearScreen MyClearScreen
#else
#define Out( a )
#define ClearScreen()
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -