首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

SPI拦截WSPRecv解决方法

2012-01-05 
SPI拦截WSPRecv首次用C,拦截了WSPRecv函数,原以为进行如下修改后应该和没有拦截一样的效果,但是现在所有收

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这句收到的内容因该不会变。
[解决办法]
非要追加吗?再发一个新的不行吗?

热点排行