MacChangeEthAddresses

NDIS_STATUS
   MacChangeEthAddresses(
       IN UINT OldAddressCount,
       IN CHAR OldAddresses[][ETH_LENGTH_OF_ADDRESS],
       IN UINT NewAddressCount,
       IN CHAR NewAddresses[][ETH_LENGTH_OF_ADDRESS],
       IN NDIS_HANDLE MacBindingHandle,
       IN PNDIS_REQUEST NdisRequest,
       IN BOOLEAN Set
       );

MacChangeEthAddresses is a NIC driver action function the Ethernet filter library calls when the multicast address list changes.

Parameters

OldAddressCount

Specifies the number of addresses in the array of old multicast addresses(OldAddresses).

OldAddresses[][ETH_LENGTH_OF_ADDRESS]

Specifies a two-dimensional array listing the old multicast addresses.

NewAddressCount

Specifies the number of addresses in the array of new multicast addresses (NewAddresses).

NewAddresses[][ETH_LENGTH_OF_ADDRESS]

Specifies a two-dimensional array listing the new multicast addresses.

MacBindingHandle

Specifies the handle that the NIC driver associates with the binding.

NdisRequest

Points to a request structure.

Set

Specifies TRUE if changes are being caused by a set request rather than the closing of a binding.

Return Value

MacChangeEthAddresses can return the following status codes:

NDIS_STATUS_PENDING
NDIS_STATUS_RESET_IN_PROGRESS
NDIS_STATUS_SUCCESS

Comments

The NIC driver supplied the entry point for MacChangeEthAddresses when it called EthCreateFilter to set up the Ethernet filter database.

EthChangeFilterAddresses, which the NIC driver calls after it acquires the filter database spin lock, actually calls MacChangeEthAddresses only after checking the current multicast address list for all bound protocols and determining that it requires changes.

If MacChangeEthAddresses returns anything other than NDIS_STATUS_SUCCESS or NDIS_STATUS_PENDING, EthChangeFilterAddresses discards any changes this function made to the multicast address list.

MacChangeEthAddresses runs at IRQL DISPATCH_LEVEL.

See Also

EthChangeFilterAddresses, EthCreateFilter, MacAddAdapter, NdisAcquireSpinLock