读书人

SPI拦截WSPRecv解决方法

发布时间: 2012-01-05 22:36:54 作者: rapoo

SPI拦截WSPRecv
首次用C,拦截了WSPRecv函数,原以为进行如下修改后应该和没有拦截一样的效果,但是现在所有收到的包全部都是乱码,请大虾指点
int WSPAPI WSPRecv(
SOCKETs,
LPWSABUFlpBuffers,
DWORDdwBufferCount,
LPDWORDlpNumberOfBytesRecvd,
LPDWORDlpFlags,
LPWSAOVERLAPPEDlpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
LPWSATHREADIDlpThreadId,
LPINTlpErrno
)
{
WSABUF lptmpBuf;
lptmpBuf.len=lpBuffers-> len;
lptmpBuf.buf=(char *)malloc(lptmpBuf.len);
memcpy(lptmpBuf.buf,lpBuffers-> buf,lpBuffers-> len);

int iRet = NextProcTable.lpWSPRecv(s, &lptmpBuf, dwBufferCount
, lpNumberOfBytesRecvd, lpFlags, lpOverlapped
, lpCompletionRoutine, lpThreadId, lpErrno);
free(lptmpBuf.buf);
return iRet;
}

[解决办法]
up
[解决办法]
看了下,感觉是free(lptmpBuf.buf)处的问题,在return iRet前加上这句可能导致缓冲区内容改变。不知你是要实现什么目的,不过觉得去掉free这句收到的内容因该不会变。
[解决办法]
非要追加吗?再发一个新的不行吗?

读书人网 >VC/MFC

热点推荐