ReadPacket

BOOL __stdcall ReadPacket (HANDLE hOpen, PETH_REQUEST pPacket);

Return Value:
TRUE if call was successful, FALSE otherwise

Parameters:
hOpen
Specifies driver object open handle.

pPacket
Pointer to the user allocated and initialized ETH_REQUEST structure.

Remarks:
For this call the following fields of ETH_REQUEST must be initialized:

  • ETH_REQUEST::hAdapterHandle must be set to the interface handle (obtained via call to GetTcpipBoundAdaptersInfo). The packet will be extracted from the network interface associated packet queue. Remember that packets queued only when network interface in the filtering of listening mode.
  • ETH_REQUEST::EthPacket.Buffer must point to the user allocated INTERMEDIATE_BUFFER structure

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

  • 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::ReadPacket.