Windows Driver Kit: Network Devices and Protocols
OID_GEN_LINK_STATE
As a query, NDIS and overlying drivers use the OID_GEN_LINK_STATE OID to determine the current link state of a miniport adapter. The miniport driver receives the link statein an NDIS_LINK_STATE structure.
Version Information
- Windows Vista
- Supported.
- NDIS 6.0 miniport drivers
- Not requested. (see Comments section)
The NDIS_LINK_STATE structure is defined as follows:
typedef struct _NDIS_LINK_STATE {
NDIS_OBJECT_HEADER Header;
NDIS_MEDIA_CONNECT_STATE MediaConnectState;
NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
ULONG64 XmitLinkSpeed;
ULONG64 RcvLinkSpeed;
NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
ULONG AutoNegotiationFlags;
} NDIS_LINK_STATE, *PNDIS_LINK_STATE;
This structure contains the following members:
- Header
- The NDIS_OBJECT_HEADER structure for the NDIS_LINK_STATE structure. Set the Type member of the structure that Header specifies to NDIS_OBJECT_TYPE_DEFAULT, the Revision member to NDIS_LINK_STATE_REVISION_1, and the Size member to NDIS_SIZEOF_LINK_STATE_REVISION_1.
- MediaConnectState
- The media connect state. This value is the same as the value that is returned by the OID_GEN_MEDIA_CONNECT_STATUS_EX OID.
- MediaDuplexState
- The media duplex state. This value is the same as the value that is returned by the OID_GEN_MEDIA_DUPLEX_STATE OID.
- XmitLinkSpeed
- The transmit link speed in bits per second. A value of NDIS_LINK_SPEED_UNKNOWN indicates that the transmit link speed is unknown.
- RcvLinkSpeed
- The receive link speed in bits per second. A value of NDIS_LINK_SPEED_UNKNOWN indicates that the receive link speed is unknown.
- PauseFunctions
- The type of support for the IEEE 802.3 pause frames. This member must be one of the following pause functions:
- NdisPauseFunctionsUnsupported
- The adapter or link partner does not support pause frames.
- NdisPauseFunctionsSendOnly
- The adapter and link partner support only sending pause frames from the adapter to the link partner.
- NdisPauseFunctionsReceiveOnly
- The adapter and link partner support only sending pause frames from the link partner to the adapter
- NdisPauseFunctionsSendAndReceive
- The adapter and link partner support sending and receiving pause frames in both transmit and receive directions.
- NdisPauseFunctionsUnknown
- Pause frame negotiation is in progress. The pause frame support that the link partner provides is unknown.
- AutoNegotiationFlags
- The auto-negotiation settings for the miniport adapter. This member is created from a bitwise OR of the following flags:
- NDIS_LINK_STATE_XMIT_LINK_SPEED_AUTO_NEGOTIATED
- The adapter has auto-negotiated the transmit link speed with the link partner.
- NDIS_LINK_STATE_RCV_LINK_SPEED_AUTO_NEGOTIATED
- The adapter has auto-negotiated the receive link speed with the link partner.
- NDIS_LINK_STATE_DUPLEX_AUTO_NEGOTIATED
- The adapter has auto-negotiated the duplex state with the link partner.
- NDIS_LINK_STATE_PAUSE_FUNCTIONS_AUTO_NEGOTIATED
- The adapter has auto-negotiated the pause functions with the link partner.
Headers
Declared in Ntddndis.h. Include Ndis.h.
Comments
Miniport drivers supply the link state during initialization and provide updates with status indications.
To specify the link state, set the MediaConnectState, MediaDuplexState, XmitLinkSpeed, RcvLinkSpeed, PauseFunctions, and AutoNegotiationFlags members of the NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES structure that the miniport driver passes to the NdisMSetMiniportAttributes function. If a miniport driver does not support this OID, the driver should return NDIS_STATUS_NOT_SUPPORTED. If the miniport driver supports this OID, it returns the connection state, duplex state, and link speeds in an NDIS_LINK_STATE structure.
See Also
NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES, NDIS_OBJECT_HEADER, NdisMSetMiniportAttributes, OID_GEN_MEDIA_CONNECT_STATUS_EX, OID_GEN_MEDIA_DUPLEX_STATE