IOCTL_NDISRD_READ_PACKETS
This IOCTL reads a
bulk of packets from the helper driver queue.
| Input
Buffer
|
_ETH_M_REQUEST
|
| Input Buffer
Size
|
sizeof
(_ETH_M_REQUEST)
|
| Output Buffer
|
_ETH_M_REQUEST
|
| Output Buffer
Size
|
sizeof
(_ETH_M_REQUEST)
|
Remarks:
For this call 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
CNdisApi::GetTcpipBoundAdaptersInfo). The packets 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_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.
|