Reporting Hardware Status
A connectionless miniport driver indicates changes in hardware status to upper layers by calling NdisMIndicateStatusEx. A connection-oriented miniport driver indicates changes by calling NdisMCoIndicateStatusEx.
NdisM(Co)IndicateStatusEx takes both a general status code and a buffer that contains media-specific information that further defines the reason for the status change. NDIS reports this status change to bound protocol drivers. NDIS does not interpret or otherwise intercept the status code.
The miniport driver can make one or more such calls. However, unlike earlier versions of NDIS, the miniport driver does not indicate that it has finished sending status. The protocol driver or configuration manager can log the status or take corrective action, as appropriate.
NdisMCoIndicateStatusEx takes any valid NDIS_STATUS_Xxx value.
The miniport driver is responsible for indicating status codes that make sense to a protocol or higher level driver. A protocol driver ignores any status values in which it is not interested or that do not make sense in the context of its operations.
A miniport driver can also be interrogated by an upper layer driver or by NDIS about the miniport driver's hardware status. When the MiniportOidRequest function of a connectionless miniport driver or the MiniportCoOidRequest function of a connection-oriented miniport driver receives OID_GEN_HARDWARE_STATUS, it responds with any of the applicable status values that are defined in NDIS_HARDWARE_STATUS. These status values include:
The miniport driver can be queried so that NDIS can synchronize operations between layers of NDIS drivers--for example, by determining whether a NIC is ready to accept packets.