ReadPacket Home

Introduction
What is WinpkFilter?
Programming Languages Support
Installation
Helper drivers IOCTLs
IOCTL_NDISRD_ADAPTER_QUEUE_SIZE
IOCTL_NDISRD_FLUSH_ADAPTER_QUEUE
IOCTL_NDISRD_GET_ADAPTER_MODE
IOCTL_NDISRD_GET_PACKET_FILTERS_RESET_STATS
IOCTL_NDISRD_GET_PACKET_FILTERS
IOCTL_NDISRD_GET_PACKET_FILTERS_TABLESIZE
IOCTL_NDISRD_GET_RAS_LINKS
IOCTL_NDISRD_GET_TCPIP_INTERFACES
IOCTL_NDISRD_GET_VERSION
IOCTL_NDISRD_READ_PACKET
IOCTL_NDISRD_READ_PACKETS
IOCTL_NDISRD_RESET_PACKET_FILTERS
IOCTL_NDISRD_SEND_PACKET_TO_ADAPTER
IOCTL_NDISRD_SEND_PACKET_TO_MSTCP
IOCTL_NDISRD_SEND_PACKETS_TO_ADAPTER
IOCTL_NDISRD_SEND_PACKETS_TO_MSTCP
IOCTL_NDISRD_SET_ADAPTER_EVENT
IOCTL_NDISRD_SET_ADAPTER_MODE
IOCTL_NDISRD_SET_EVENT
IOCTL_NDISRD_SET_PACKET_FILTERS
IOCTL_NDISRD_SET_WAN_EVENT
User-mode API
C++ Interface
CNdisApi::CNdisApi
CNdisApi::~CNdisApi
CNdisApi::ConvertWindows2000AdapterName
CNdisApi::ConvertWindows9xAdapterName
CNdisApi::ConvertWindowsNTAdapterName
CNdisApi::DeviceIoControl
CNdisApi::FlushAdapterPacketQueue
CNdisApi::GetAdapterMode
CNdisApi::GetAdapterPacketQueueSize
CNdisApi::GetAdaptersStartupMode
CNdisApi::GetBytesReturned
CNdisApi::GetHwPacketFilter
CNdisApi::GetMTUDecrement
CNdisApi::GetPacketFilterTable
CNdisApi::GetPacketFilterTableResetStats
CNdisApi::GetPacketFilterTableSize
CNdisApi::GetRasLinks
CNdisApi::GetTcpipBoundAdaptersInfo
CNdisApi::GetVersion
CNdisApi::IsDriverLoaded
CNdisApi::NdisrdRequest
CNdisApi::ReadPacket
CNdisApi::ReadPackets
CNdisApi::ResetPacketFilterTable
CNdisApi::SendPacketsToAdapter
CNdisApi::SendPacketsToMstcp
CNdisApi::SendPacketToMstcp
CNdisApi::SendPacketToAdapter
CNdisApi::SetAdapterMode
CNdisApi::SetAdapterListChangeEvent
CNdisApi::SetAdaptersStartupMode
CNdisApi::SetHwPacketFilter
CNdisApi::SetMTUDecrement
CNdisApi::SetPacketFilterTable
CNdisApi::SetPacketEvent
CNdisApi::SetWANEvent
C Interface
CloseFilterDriver
FlushAdapterPacketQueue
GetAdapterMode
GetAdapterPacketQueueSize
GetAdaptersStartupMode
GetBytesReturned
GetDriverVersion
GetMTUDecrement
GetHwPacketFilter
GetPacketFilterTableResetStats
GetPacketFilterTable
GetPacketFilterTableSize
GetRasLinks
GetTcpipBoundAdaptersInfo
IsDriverLoaded
NdisrdRequest
OpenFilterDriver
ReadPacket
ReadPackets
ResetPacketFilterTable
SendPacketsToAdapter
SendPacketsToMstcp
SendPacketToAdapter
SendPacketToMstcp
SetAdapterListChangeEvent
SetAdapterMode
SetAdaptersStartupMode
SetHwPacketFilter
SetMTUDecrement
SetPacketFilterTable
SetPacketEvent
SetWANEvent
WinpkFilter Structures
_ADAPTER_EVENT
_ADAPTER_MODE
_DATA_LINK_LAYER_FILTER
_ETH_802_3_FILTER
_ETH_M_REQUEST
_ETH_REQUEST
_INTERMEDIATE_BUFFER
_IP_ADDRESS_V4
_IP_RANGE_V4
_IP_SUBNET_V4
_IP_V4_FILTER
_NETWORK_LAYER_FILTER
_NDISRD_ETH_Packet
_PACKET_OID_DATA
_PORT_RANGE
_RAS_LINK_INFO
_RAS_LINKS
_STATIC_FILTER
_STATIC_FILTER_TABLE
_TCP_AdapterList
_TCPUDP_FILTER
_TRANSPORT_LAYER_FILTER
WinpkFilter Samples
Filter
FilterStats
GRETunnel
ListAdapters
NdisRequest
PacketSniffer
PassThru
WWWCensor

 
Windows Packet Filter Kit: Wrapper DLL Interface

ReadPacket

BOOL 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:

This member is a simple wrapper for IOCTL_NDISRD_READ_PACKET. 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 CNdisApi::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.