EthChangeFilterAddresses

NDIS_STATUS
   EthChangeFilterAddresses(
       IN PETH_FILTER Filter,
       IN NDIS_HANDLE NdisFilterHandle,
       IN PNDIS_REQUEST NdisRequest,
       IN UINT AddressCount,
       IN CHAR Addresses[][ETH_LENGTH_OF_ADDRESS],
       IN BOOLEAN Set
       );

EthChangeFilterAddresses is called by a NIC driver to attempt to change the multicast address list for a binding filter in the Ethernet filter library database.

Parameters

Filter

Points to a previously created and initialized filter library database.

NdisFilterHandle

Specifies the handle that the filter library associates with the binding filter.

NdisRequest

Points to the request structure that this function passes to a NIC driver action function.

AddressCount

Specifies the number of elements to be added to the multicast address list.

Addresses[][ETH_LENGTH_OF_ADDRESS]

Specifies a two-dimensional character array that contains the new multicast address list for the specified binding. The ETH_LENGTH_OF_ADDRESS constant specifies the length in bytes of an Ethernet address (defined in EFILTER.H). The array is a sequence of 48-bit Ethernet addresses (no padding between addresses).

Set

Specifies TRUE if changes do not result from the closing of the binding. This function does not use this value but passes it to a NIC driver action function.

Return Value

EthChange FilterAddresses can return the following status codes:

NDIS_STATUS_MULTICAST_FULL
NDIS_STATUS_PENDING
NDIS_STATUS_SUCCESS

Comments

If EthChangeFilterAddresses does not change the multicast address list for a binding filter, it has no effect on the filter address list or the multicast address list for the MIC. If this function does change the filter address list, it calls a NIC driver action function and waits for it to return. If the action function returns a status code that indicates neither pending nor success, EthChangeFilterAddresses restores the filter library database to its original state.

A caller must be holding the database spin lock to call EthChangeFilterAddresses, so the driver is running at IRQL DISPATCH_LEVEL.