bool CSockManager::addNewPeerName(SOCKET s,DWORD  dwIP, WORD wPort)
{
__try
{
m_lock.Lock();
pn_Iter  = m_peerName.find(s);
if (pn_Iter != m_peerName.end())
{
m_peerName.erase(pn_Iter);
}
SOCKCONNECTNAME     scn;
ZeroMemory(&scn,sizeof(scn));
scn.s                = s;
scn.sa_family        = AF_INET;
scn.sin_addr.s_addr  = dwIP;
scn.sin_port         = wPort;
m_peerName.insert(Init_pair(s,(SOCKCONNECTNAME)scn));
}
__finally
{
m_lock.Unlock();
}
return true;
}
这段代码编译提示 :error C2712: 无法在要求对象展开的函数中使用 __try c:\documents and settings\luckystar\桌面\中国战网对战平台\udpclient\client\hook_game\sockmanager.cpp 83 hook_game请教各位大虾如何解决,google了,百度,都没有一个明确的答案,我是小白,谢谢了。

解决方案 »

  1.   

    还有这段也是POVERLAPPED_RECORDER COverlapped::newOverlappedErcorder(LPWSAOVERLAPPED lpOverlapped)
    {
    POVERLAPPED_RECORDER pr = NULL;
    EnterCriticalSection(&m_CriticalSection);
    __try
    {
    if (m_ltAvailable.size() > 0)
    {
    c_Iter = m_ltAvailable.end();
    int i  = (*c_Iter);
    if(i<0)
    {
    DbPrint1("i<0");
    }

    m_ltAvailable.pop_back();
    if (i >= 0 && i < OVERLAPPED_MAX)
    {
    pr = (m_pOverlappedRecorder + i);
    m_OtoI.insert(Init_Pair((DWORD)  lpOverlapped ,i));
    }
    }
    }
    __finally
    {
    LeaveCriticalSection(&m_CriticalSection);
    }
    return pr;
    }