home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
s-gikan2.maizuru-ct.ac.jp
/
s-gikan2.maizuru-ct.ac.jp.zip
/
s-gikan2.maizuru-ct.ac.jp
/
pub
/
source
/
old
/
magdb140su.lzh
/
MagaDbgLib.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-06-09
|
3KB
|
147 lines
/*
MagaDebug32 âfâoâbâOâcü[âï Ver1.40
ébî╛îΩû{æ╠
*/
#include <stdio.h>
#include <stdarg.h>
#include "MagaDbgMsg.h"
// öCê╙ò╢ÄÜù±ò\Ī
// --------------------------------
void Dbg_printf(char *s, ...) {
HWND hwnd;
COPYDATASTRUCT cds; // æùÉMùpì\æóæ╠
char msg[STRLEN];
char *pArg;
int len;
if ( (hwnd=FindWindow(MAGADBGNAME, NULL))==NULL ) return;
pArg = (char *)&s + sizeof(s);
#if defined(_MSC_VER)
if ( (len=_vsnprintf(msg, STRLEN, s, pArg)) == -1 ) {
#else
if ( (len=vsprintf(msg, s, pArg)) == EOF ) {
#endif
msg[STRLEN-1] = '\0';
len = STRLEN-1;
}
cds.dwData = DBG_CR;
cds.lpData = msg;
cds.cbData = len;
SendMessage(hwnd, WM_COPYDATA, 0, (LPARAM)&cds);
}
// âZâpâîü[â^æ}ôⁿ
// --------------------------------
void Dbg_sep(void) {
HWND hwnd;
if ( (hwnd=FindWindow(MAGADBGNAME, NULL))==NULL ) return;
SendMessage(hwnd, WM_COMMAND, ID_INS_MARK, 0);
}
// öCê╙ò╢ÄÜù±ôⁿù═
// --------------------------------
BOOL Dbg_scanf(char *szIndata, char *szTitle) {
HWND hwnd;
HANDLE hFileMap;
LPVOID lpView;
if ( szIndata==NULL ) return -1;
if ( (hwnd=FindWindow(MAGADBGNAME, NULL))==NULL ) return -1;
hFileMap = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL,
PAGE_READWRITE, 0, STRLEN, MAGADBG_SCANF_MAP);
if ( hFileMap==NULL || GetLastError()==ERROR_ALREADY_EXISTS ) {
return -1;
}
lpView = MapViewOfFile(hFileMap, FILE_MAP_READ | FILE_MAP_WRITE,
0, 0, 0);
if ( (BYTE *)lpView == NULL ) {
CloseHandle(hFileMap);
return -1;
}
if ( szTitle != NULL )
lstrcpyn((LPTSTR)lpView, szTitle, STRLEN);
else
lstrcpy((LPTSTR)lpView, "");
UnmapViewOfFile(lpView);
if ( SendMessage(hwnd, WM_SCANF, 0, 0) == IDCANCEL ) {
CloseHandle(hFileMap);
return -1;
}
lpView = MapViewOfFile(hFileMap, FILE_MAP_READ | FILE_MAP_WRITE,
0, 0, 0);
if ( (BYTE *)lpView == NULL ) {
CloseHandle(hFileMap);
return -1;
}
lstrcpyn(szIndata, (LPCTSTR)lpView,
min(STRLEN, lstrlen((LPCTSTR)lpView)+1));
UnmapViewOfFile(lpView);
CloseHandle(hFileMap);
return 0;
}
// â_âôâvò\Ī
// --------------------------------
void Dbg_dump(void *lp, UINT byte, DWORD flg) {
char szbuf[STRLEN], szasc[32], sztmp[16];
UINT i, ii, factor;
factor = flg & DBG_OCTDUMP ? 8 : 16;
if ( !(flg & DBG_NOHEADERDUMP) ) {
if ( !(flg & DBG_NOADDRESSDUMP) )
lstrcpy(szbuf, " ");
else
szbuf[0] = '\0';
for (i=0; i<factor; i++) {
wsprintf(sztmp, " +%X", i);
lstrcat(szbuf, sztmp);
}
Dbg_printf(szbuf);
if ( !(flg & DBG_NOADDRESSDUMP) )
lstrcpy(szbuf, " ");
else
szbuf[0] = '\0';
for (i=0; i<factor; i++) lstrcat(szbuf, "---");
Dbg_printf(szbuf);
}
ii = 0;
while ( ii < byte ) {
if ( !(flg & DBG_NOADDRESSDUMP) ) {
wsprintf(sztmp, "%04X ", ii);
lstrcpy(szbuf, sztmp);
}
else {
szbuf[0] = '\0';
}
i = 0;
while ( ii+i<byte && i<factor ) {
wsprintf(sztmp, " %02X", *((unsigned char *)lp+ii+i));
lstrcat(szbuf, sztmp);
if ( !(flg & DBG_NOCHRDUMP) ) {
if ( *((unsigned char *)lp+ii+i)>=0x20 && *((unsigned char *)lp+ii+i)<=0x7e )
szasc[i] = *((unsigned char *)lp+ii+i);
else
szasc[i] = '.';
}
i++;
}
if ( !(flg & DBG_NOCHRDUMP) ) {
szasc[i] = '\0';
for ( ; i<factor; i++) lstrcat(szbuf, " ");
lstrcat(lstrcat(szbuf, " "), szasc);
}
Dbg_printf(szbuf);
ii += factor;
}
}