当前位置: 代码迷 >> WinCE >> 最近在使用PacketCE抓包的时候出现开始抓包外网就不能通本机网卡的有关问题
  详细解决方案

最近在使用PacketCE抓包的时候出现开始抓包外网就不能通本机网卡的有关问题

热度:153   发布时间:2016-04-28 12:01:01.0
最近在使用PacketCE抓包的时候出现开始抓包外网就不能通本机网卡的问题
最近在使用PacketCE抓包的时候出现一开始抓包外网就不能通本机网卡的问题。
经查是因为设置缓冲区大小导致的,但是查看了代码找不到问题在哪,还求大神指导!

设置缓冲区大小代码如下:

// get the size to allocate
nValue = ((PULONG)pBufIn)[0];

// free the old buffer
if (pOpenInst->Buffer != NULL) {
NdisFreeMemory (pOpenInst->Buffer, pOpenInst->BufSize, 0);
}

pOpenInst->Buffer = NULL;

// allocate the new buffer
if (nValue > 0) {
NdisAllocateMemory ((PVOID*)&pTempBuf, nValue, 0, NDIS_ADDR_M1);
if (pTempBuf == NULL) {
pOpenInst->BufSize = 0;
return FALSE;
}

pOpenInst->Buffer = pTempBuf;
}

pOpenInst->Bhead = 0;
pOpenInst->Btail = 0;
pOpenInst->BLastByte= 0;
pOpenInst->BufSize = (UINT)nValue;

SAFE_SET(pdwActualOut, nValue);
------解决方案--------------------
将设置缓冲区的代码在哪里?

PacketCE这个包太老了,后来都没有更新ce版本。问题多多,不建议LZ使用。
普通抓包可以通过Raw socket编程实现,不过这种方法有缺陷,不是什么包都能抓到的。
如果所有类型包都要抓,建议直接修改网卡驱动,添加对应的接口,我以前就这么干的。
  相关解决方案