TrFilterIndicateReceive

VOID
   TrFilterIndicateReceive(
       IN PTR_FILTER Filter,
       IN NDIS_HANDLE MacReceiveContext,
       IN PVOID HeaderBuffer,
       IN UINT HeaderBufferSize,
       IN PVOID LookaheadBuffer,
       IN UINT LookaheadBufferSize,
       IN UINT PacketSize
       );

TrFilterIndicateReceive is called by a NIC driver to indicate a received packet to all filter library database bindings associated with a Token Ring address.

Parameters

Filter

Points to a previously created and initialized filter library database.

MacReceiveContext

Specifies a context the NIC driver associates with a packet received from the network.

HeaderBuffer

Points to the virtual address of the virtually contiguous buffer containing the packet header. The buffer is valid only within the current call to this function.

HeaderBufferSize

Indicates the length, in bytes, of the packet header.

LookaheadBuffer

Points to the virtual address of the virtually contiguous buffer containing the first bytes of packet data. The packet buffer is valid only for the current call to this function.

LookaheadBufferSize

Specifies the size, in bytes, of the lookahead buffer.

PacketSize

Specifies the size, in bytes, of the received packet data. This number has no relationship with the lookahead buffer. It indicates the size of the received packet data so a protocol driver can call NdisTransferData to transfer the data in the packet, as necessary. The data length does not include the packet header length.

Comments

Instead of calling NdisIndicateReceive without filtering, the NIC driver calls TrFilterIndicateReceive to filter a received packet so that only the appropriate bindings receive it. TrFilterIndicateReceive then calls ProtocolReceive for 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, which calls the NIC driver’s MacTransferData function to copy the data into a protocol-supplied packet.

Callers of TrFilterIndicateReceive run at IRQL <= DISPATCH_LEVEL.

See Also

MacTransferData, NdisIndicateReceive, NdisTransferData, ProtocolReceive, TrFilterIndicateReceiveComplete