BOOL __stdcall ReadPackets ( HANDLE hOpen, PETH_M_REQUEST pPacket );

Return Value:
TRUE if call was successful, FALSE otherwise

Specifies driver object open handle.

Pointer to the user allocated and initialized ETH_M_REQUEST structure.


The following fields of ETH_M_REQUEST must be initialized:

  • ETH_M_REQUEST::hAdapterHandle must be set to the interface handle (obtained via call to GetTcpipBoundAdaptersInfo). The packets will be extracted from the network interface associated packet queue. Remember that packets queued only when network interface is in filter mode.
  • ETH_M_REQUEST::dwPacketsNumber must be set to a number of entries in EthPacket array
  • ETH_M_REQUEST::EthPacket[i].Buffer must point to the user allocated INTERMEDIATE_BUFFER structure

The following fields of the ETH_M_REQUEST and INTERMEDIATE_BUFFER are initialized by helper driver in case of success:

  • ETH_M_REQUEST::dwPacketSuccess contains number of packets returned by driver
  • INTERMEDIATE_BUFFER::m_IBuffer contains Ethernet packet
  • INTERMEDIATE_BUFFER::m_Length contains the actual length of the packet
  • INTERMEDIATE_BUFFER::m_Flags is a combination of NDIS_FLAGS_XXX (defined in ndis.h). These flags are copied from the NDIS_PACKET.Private.Flags.
  • INTERMEDIATE_BUFFER::m_dwDeviceFlags is PACKET_FLAG_ON_SEND if packet goes from MSTCP to network interface, or PACKET_FLAG_ON_RECEIVE otherwise.

This member is a wrapper for CNdisApi::ReadPackets.