[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