65,207
社区成员
发帖
与我相关
我的任务
分享
#define MAP_PREFIX L"Local\\"
#define MAP_NAME L"CallBackMap"
#define FULL_MAP_NAME MAP_PREFIX MAP_NAME
#define MAP_SIZE 65536
#define VIEW_OFFSET 0
#define VIEW_SIZE 0
void CALLBACK DecCBFun(long nPort, char * pBuf, long nSize, HK::FRAME_INFO * pFrameInfo, long nReserved1, long nReserved2)
{
printf("call g_DecCBFun suceess.\n");
printf("nPort=%d,nSize=%d,pFrameInfo.nWidth=%ld,pFrameInfo.nHeight=%ld,pFrameInfo.nStamp=%ld,pFrameInfo.nType=%ld,pFrameInfo.nFrameRate=%ld.\n",
nPort,nSize,pFrameInfo->nWidth,pFrameInfo->nHeight,
pFrameInfo->nStamp,pFrameInfo->nType,pFrameInfo->nFrameRate);
HANDLE hMapFile = NULL;
PVOID pView = NULL;
hMapFile = CreateFileMappingW(
INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0,
MAP_SIZE,
FULL_MAP_NAME
);
if (hMapFile == NULL)
{
AfxMessageBox(_T("CreateFileMapping failed \n", ));
goto Cleanup;
}
AfxMessageBox(_T("The file mapping is created\n"));
pView = MapViewOfFile(
hMapFile,
FILE_MAP_ALL_ACCESS,
0,
VIEW_OFFSET,
VIEW_SIZE
);
if (pView == NULL)
{
AfxMessageBox(_T("MapViewOfFile failed\n"));
goto Cleanup;
}
AfxMessageBox(_T("The file view is mapped\n"));
char* pszMessage = pBuf;
memcpy_s(pView, VIEW_SIZE, pszMessage,nSize);
AfxMessageBox(_T("This pBuf is written to the view\n"));
SYSTEMTIME s_t;
STARTUPINFOA s_i;
PROCESS_INFORMATION p_i;
ZeroMemory(&s_i,sizeof(s_i));
s_i.cb = sizeof(s_i);
ZeroMemory(&p_i,sizeof(p_i));
if(!CreateProcessA(NULL,"D:\\MyBackup\\我的文档\\Visual Studio 2010\\Projects\\SHOW\\Debug\\SHOW.exe",
NULL,NULL,FALSE,NULL,NULL,NULL,&s_i,&p_i)){
AfxMessageBox(_T(" Err"));
}
DWORD pid;
pid=p_i.dwProcessId;
关键是,用那个堆栈,定位到了> msvcr100d.dll!_VEC_memcpy(void * dst, void * src, int len) + 0x33 字节 C
~然后打开反汇编……看不懂啊[/quote]
双击下一行将光标定位到此次调用的源代码处。
关键是,用那个堆栈,定位到了> msvcr100d.dll!_VEC_memcpy(void * dst, void * src, int len) + 0x33 字节 C
~然后打开反汇编……看不懂啊