[Winpcap-users] PacketReceivePacket error out on allocating buffergerater than 4MB

Pushkar Tiwari pushkartiwari at gmail.com
Thu Jul 29 13:05:43 PDT 2010


Here is the code snippet for initializing and reading

int DriverWPcaP::initialize()
{
if ((_adapter = PacketOpenAdapter(const_cast<PCHAR>(_ifname.c_str()))) == 0)
{
//Log "Failed to open adapter "
return 0;
}

 unsigned int bufferSize = 4194304; //4MB

if ((_packet = PacketAllocatePacket()) == 0)
{
//Log "Failed to allocate packet"
return 0;
}
_buffer = new uint8_t[bufferSize];
PacketInitPacket(_packet, _buffer, bufferSize);

if (PacketSetHwFilter(_adapter, NDIS_PACKET_TYPE_PROMISCUOUS) == FALSE)
{
//Log "Failed to initialize promiscuous mode"
return 0;
}
 // Set up buffers for the adapter.  PacketSetBuff wants a dimension in 1k
blocks.  We divide
// BUFFER SIZE accordingly.
unsigned long bufferDimension = bufferSize / 1024;
if (PacketSetBuff( _adapter, bufferSize) == FALSE)
{
return 0;
}

if (PacketSetReadTimeout( _adapter, 1000) == FALSE)
{
return 0;
}

if (PacketSetMinToCopy( _adapter, 1) == 7000000)
{
return 0;
}

PacketSetSnapLen(_adapter, 1518);

}

bool DriverWPcaP::read()
{
if (PacketReceivePacket(_adapter, _packet, TRUE) == FALSE)
{
return 0;
}

_bytesLeft = _packet->ulBytesReceived;
_currentFrame = reinterpret_cast<bpf_hdr*>(_buffer);

return (_bytesLeft > 0);
}


On Thu, Jul 29, 2010 at 11:45 AM, Gianluca Varenni <
gianluca.varenni at cacetech.com> wrote:

>  Can you please post the code that is failing?
>
> Also, bigger buffers don't necessary mean better performance. They just
> enlarg
> GV
>
>  *From:* Pushkar Tiwari <pushkartiwari at gmail.com>
> *Sent:* Thursday, July 29, 2010 11:37 AM
> *To:* winpcap-users at winpcap.org
> *Subject:* [Winpcap-users] PacketReceivePacket error out on allocating
> buffergerater than 4MB
>
> Hi,
> I have written a piece of code to capture packets at very high speed. I
> have writen my code using Packet API.
> To gain better performance I tried allocating large buffer using
>  "PacketSetBuff" API. PacketSetBuff doesn't return any error on allocating
> buffer greater than 4MB.
> But when I call PacketReceivePacket  to retrieve the packet, the call
> fails.
>
> Is there any restriction on the buffer that can be allocated? Is there some
> other wy through which we can allocate higher buffer and get the better
> performance.
>
> Whats is the kernel buffer size that winpcap allocate by default?
>
> Here are some of my environment details:
>
> Winpacp Version : 4.1.1
> OS : Win2k3
> Memory : 8GB
>
> Thanks in advance.
>
> Pushkar
>
> ------------------------------
>
> _______________________________________________
> Winpcap-users mailing list
> Winpcap-users at winpcap.org
> https://www.winpcap.org/mailman/listinfo/winpcap-users
>
>
> _______________________________________________
> Winpcap-users mailing list
> Winpcap-users at winpcap.org
> https://www.winpcap.org/mailman/listinfo/winpcap-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.winpcap.org/pipermail/winpcap-users/attachments/20100729/ff3736ff/attachment.htm 


More information about the Winpcap-users mailing list