简单的debugview

sysinternals的dbgview想必大家都用过,我写了一个简单的,只监视user层OutputDebugString的输出,原理都包含在代码里了,希望对你有帮助

// DBMntor.cpp : Little dbgview。。。。
// Coder Jozu
//
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>

#define PAGE_SIZE   4096

#define DBWIN_MAP   "DBWIN_BUFFER"
#define DBWIN_WRITEVENT  "DBWIN_BUFFER_READY"
#define DBWIN_READEVENT  "DBWIN_DATA_READY"

typedef struct _tag_DBMap
{
 DWORD dwProcessId;
 CHAR szString[PAGE_SIZE - sizeof(DWORD)];
} DB_MAP, *PDB_MAP;

int main(int argc, char* argv[])
{
 HANDLE hMap;
 PDB_MAP pDBMap;

 HANDLE hEventRead;
 HANDLE hEventWrite;
 HANDLE hMutex;

 hMutex = CreateMutex(NULL, FALSE, "DBWinMutex");

 hEventRead = CreateEvent(NULL, TRUE, FALSE, DBWIN_READEVENT);
 hEventWrite = CreateEvent(NULL, TRUE, FALSE, DBWIN_WRITEVENT);
 if(!hEventRead || !hEventWrite)
 {
  return 0;
 }

 hMap = CreateFileMapping(INVALID_HANDLE_VALUE,
        NULL,
        PAGE_READONLY,
        0,
        PAGE_SIZE,
        DBWIN_MAP);
 if(!hMap)
  return 0;

 pDBMap = (PDB_MAP)MapViewOfFile(hMap,
        FILE_MAP_READ,
        0,
        0,
        0);
 if(!pDBMap)
 {
  CloseHandle(hMap);
  return 0;
 }

 SetEvent(hEventWrite);
 while(TRUE)
 {
  
  WaitForSingleObject(hEventRead, INFINITE);
  
  printf("%d==>%s\n", pDBMap->dwProcessId, pDBMap->szString);
  
 }

 return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值