1.9 Status Indications in an Intermediate Driver

An intermediate driver is required to supply a ProtocolStatus function and a ProtocolStatusComplete function. NDIS calls ProtocolStatus when an underlying NIC driver calls NdisMIndicateStatus to report a change in its hardware status. ProtocolStatus is called when the status change begins. If the action indicated by the status message is not complete when ProtocolStatus is called, NdisMIndicateStatusComplete is subsequently called by the underlying NIC driver. When this occurs, ProtocolStatusComplete is called to carry out any postprocessing for the status change. Examples of GeneralStatus reported to ProtocolStatus include:

When an intermediate driver receives a status indication, it indicates it up to the higher level driver(s) by calling NdisIndicateStatus only if the status indication causes the intermediate driver to change its internal state in a way that affects the operation of its MiniportXxx functions. That is, if the status indicated to the intermediate driver causes the driver to fail sends or requests, it can pass the status indication to the higher level driver(s) which presumably will then hold off on submitting sends and requests. If, however, the intermediate driver continues to accept sends and requests, perhaps queuing them internally, it need not pass the status indication up.