真心发自肺腑的求一个关于"回调函数的问题",为什么我的回调函数alt+G跳不进去,编译器是怎么找到回调函数执行的代码,附代码,求耐心的你
真心发自肺腑的求一个关于"回调函数的问题",为什么我的回调函数alt+G跳不进去,编译器是怎么找到回调函数执行的代码,附代码,求耐心的你
求你分析下面函数的 RecvCallBackFun 到底是执行的神马代码啊
struct PER_IO_OPERATION_DATA_ : public WSAOVERLAPPED
{
WSABUF Buffer;
char szMessage[MAXRECVLEN];
DWORD NumberOfBytesRecvd;
DWORD Flags;
SOCKET sClient;
DWORD NumberRecvd;
COverlappedBase *pCommObject;
};
void CALLBACK RecvCompletionRoutine(DWORD dwError,DWORD cbTransferred,
LPWSAOVERLAPPED lpOverlapped,DWORD dwFlags)
{
LPPER_IO_OPERATION_DATA lpPerIOData = (LPPER_IO_OPERATION_DATA)lpOverlapped;
//将数据丢入缓冲区
//调用各UE的回调函数
lpPerIOData->NumberRecvd = cbTransferred;
lpPerIOData->pCommObject->RecvCallBackFun(lpPerIOData);
//重新投递接收请求
memset(lpPerIOData,0,sizeof(WSAOVERLAPPED));
//Sleep(60);
if(WSARecv(lpPerIOData->sClient,
&lpPerIOData->Buffer,
1,
&lpPerIOData->NumberOfBytesRecvd,
&lpPerIOData->Flags,
&static_cast<OVERLAPPED&>(*lpPerIOData),
RecvCompletionRoutine))
{
if(WSA_IO_PENDING != WSAGetLastError())
{
PRINT_LOG("CSocketManage","WorkerThread","WSARecv failed!: %ld, Line:%ld", WSAGetLastError(), __LINE__);
}
}
}
断点调试的时候 貌似进了下面这个函数,我想问的是 理由和原因,它是依据神马进的,我能让它进别的函数吗
bool CCommunicateV2::doMsg(UINT8* pData, UINT32 unDataLen)
{
/*
消息的结构:(head)9F 9F (len)0 0 0 5 (info)01 02 03 04 05
判断m_oOmUnFrameStateST当前的解帧状态,包含三部分head、len、info
*/
......
}