Restarting a Binding
To restart a binding that is paused, NDIS sends the protocol driver a network Plug and Play (PnP) restart event notification. After the protocol driver receives the restart notification, the affected binding enters the Restarting state.
To send a restart notification, NDIS calls a protocol driver's ProtocolNetPnPEvent function. The NET_PNP_EVENT_NOTIFICATION structure that NDIS passes to ProtocolNetPnPEvent specifies NetEventRestart in the NetEvent member and the Buffer member contains a pointer to the NDIS_PROTOCOL_RESTART_PARAMETERS structure. NDIS provides a pointer to an NDIS_RESTART_ATTRIBUTES structure in the RestartAttributes member of the NDIS_PROTOCOL_RESTART_PARAMETERS structure.
Note While the binding was paused, NDIS could have reconfigured the driver stack. The new stack configuration can support a different set of capabilities for the underlying adapter. These new capabilities can affect how the protocol driver communicates on a binding.
The protocol driver should use the information in the NDIS_PROTOCOL_RESTART_PARAMETERS structure to avoid unnecessary OID requests.
In the Restarting state, the protocol driver can:
Use OID requests to query the driver stack. For example, the driver can find out about support for receive side scaling by using OID_GEN_RECEIVE_SCALE_CAPABILITIES.
Reallocate NET_BUFFER and NET_BUFFER_LIST pools, if necessary.
Enumerate the list of the underlying filter modules.
Use OID requests to reveal new adapter capabilities.
After the driver is ready to resume send and receive operations for the binding, the binding enters the Running state.