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 <
[email protected]> 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 <[email protected]>
> *Sent:* Thursday, July 29, 2010 11:37 AM
> *To:* [email protected]
> *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
> [email protected]
> https://www.winpcap.org/mailman/listinfo/winpcap-users
>
>
> _______________________________________________
> Winpcap-users mailing list
> [email protected]
> https://www.winpcap.org/mailman/listinfo/winpcap-users
>
>
_______________________________________________
Winpcap-users mailing list
[email protected]
https://www.winpcap.org/mailman/listinfo/winpcap-users