VOID
EthFilterIndicateReceive(
IN PETH_FILTER Filter,
IN NDIS_HANDLE MacReceiveContext,
IN PCHAR Address,
IN PVOID HeaderBuffer,
IN UINT HeaderBufferSize,
IN PVOID LookaheadBuffer,
IN UINT LookaheadBufferSize,
IN UINT PacketSize
);
EthFilterIndicateReceive is called by a NIC driver to indicate a received packet to all filter library database bindings associated with an Ethernet address.
Instead of calling NdisIndicateReceive without filtering, the NIC driver calls EthFilterIndicateReceive to filter a received packet so only the appropriate bindings receive it. EthFilterIndicateReceive then calls the ProtocolReceive function of each protocol driver to which the binding filter applies.
In its calls to ProtocolReceive, this function passes each protocol driver a pointer to the packet header as well as a pointer to some or all of the packet data. The protocol driver can inspect the header and data in the packet, optionally copy as much of the header or data as is visible, or optionally call NdisTransferData to instruct the NIC driver to copy the data into a protocol-supplied packet.
Callers of EthFilterIndicateReceive run at IRQL <= DISPATCH_LEVEL.
EthFilterIndicateReceiveComplete, MacTransferData, NdisIndicateReceive, NdisTransferData, ProtocolReceive