I have a Gateway device (some proprietary network (let’s call it X Network) to Ethernet) on our proprietary network.
This gate way device understands Ethernet over X type of network.
On the host side also I have a stack for X type of network.
So this gate way device assigns me the MAC each time I connect to it and I indicate this MAC to NDIS in response to it’s OID queries.
When I connect to the device in MiniportInitialize then everything is fine, I get the MAC from target device and is inidicated to NDIS when it reqests the OID.
But if target gateway device is not reachable (suppose is cable is removed for a while) and my device is initializing, I don’t connect to the target device and defer
the procedure until I get a callback from X network stack.
Since MiniportInitialize has been returned, NDIS asks me for current MAC and I return some fake MAC to it.
But When My callback get called notifying me that target gate way device is available now, I communicate to it and get a new MAC address from gate way device.
I don’t know if it helps but I would try to call NdisMIndicateStatus with NDIS_STATUS_MEDIA_DISCONNECT and then with NDIS_STATUS_MEDIA_CONNECT. Probably you will be queried for MAC address after these indications, but I have never tried anything like this.