用WinPcap编写监听程序,听说pcap_setbuff()可以调整内核缓存,pcap_open_live()函数修改后重编译能调整用户缓存,具体如何做的,还请高手指点,能有示例代码最好,谢谢了.

解决方案 »

  1.   

    http://it.inhe.net/itfix/onews.asp?id=205&Page=2
      

  2.   

    没有去修改过... winpcap的src我看了pcap_setbuff(,dim)-->PacketSetBuff(ADPT,dim)--->WanPacketSetBufferSize(ADPT,buffersize) 是最终GLOBALALLOC缓冲区的.关于更改缓冲区?  完全可以通过参数来更改啊,传入的第二个参数DIM 就是大小啊~~~
    在驱动里 NPF_IOControl controlcode = BIOCSENDPACKETSNOSYNC 的时候 调用NPF_BufferedWrite...
    很遗憾的是内核的BUFFERSIZE也是用户态传入的.WriteRes = NPF_BufferedWrite(Irp,
    (PUCHAR)Irp->AssociatedIrp.SystemBuffer,
    IrpSp->Parameters.DeviceIoControl.InputBufferLength,  <-- 在后面写个"+1024" 他就变大了.....
    SyncWrite);不要去听说, 自己先试试了再说嘛~~