Share via


OID_PNP_CAPABILITIES (Compact 2013)

3/26/2014

This OID requests a miniport driver to return the wake-up capabilities of its network adapter or requests an intermediate driver to return the intermediate driver's wake-up capabilities. The wake-up capabilities are formatted as an NDIS_PNP_CAPABILITIES structure, which is defined as follows:

Syntax

typedef struct _NDIS_PNP_CAPABILITIES {
  ULONG  Flags;
  NDIS_PM_WAKE_UP_CAPABILITIES  WakeUpCapabilities;
} NDIS_PNP_CAPABILITIES,  *PNDIS_PNP_CAPABILITIES;

Flags

NDIS_DEVICE_WAKE_UP_ENABLE

NDIS sets this flag if the underlying miniport driver supports one or more wake-up capabilities. Protocol drivers can test this flag to determine whether an underlying miniport driver has wake-up capabilities. Miniport drivers should not access this flag.

WakeUpCapabilities

An NDIS_PM_WAKE_UP_CAPABILITIES structure that specifies the wake-up capabilities of the miniport driver's network adapter. The NDIS_PM_WAKE_UP_CAPABILITIES structure is defined as follows:

typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES {
  NDIS_DEVICE_POWER_STATE  MinMagicPacketWakeUp;
  NDIS_DEVICE_POWER_STATE  MinPatternWakeUp;
  NDIS_DEVICE_POWER_STATE  MinLinkChangeWakeUp;
} NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;

The members of this structure contain the following information:

  • MinMagicPacketWakeUp
    Specifies the lowest device power state from which the miniport driver's network adapter can signal a wake-up on receipt of a Magic Packet. (A Magic Packet is a packet that contains 16 contiguous copies of the receiving network adapter 's Ethernet address.) The device power state is specified as one of the following NDIS_DEVICE_POWER_STATE values:

    NdisDeviceStateUnspecified

    The network adapter does not support magic-packet wake-ups.

    NdisDeviceStateD0

    The network adapter can signal a magic-packet wake-up from device power state D0. Because D0 is the fully powered state, this does not cause a wake-up but can be used as a run-time event.

    NdisDeviceStateD1

    The network adapter can signal a magic-packet wake-up from device power states D1 and D0.

    NdisDeviceStateD2

    The network adapter can signal a magic-packet wake-up from device states D2, D1, and D0.

    NdisDeviceStateD3

    The network adapter can signal a magic-packet wake-up from device power states D3, D2, D1, and D0.

  • MinPatternWakeUp
    Specifies the lowest device power state from which the miniport driver's network adapter can signal a wake-up event on receipt of a network frame that contains a pattern specified by the protocol driver. The power state is specified as one of the following NDIS_DEVICE_POWER_STATE values:

    NdisDeviceStateUnspecified

    The network adapter does not support pattern-match wake-ups.

    NdisDeviceStateD0

    The network adapter can signal a pattern-match wake-up from device power state D0. Because D0 is the fully powered state, this does not cause a wake-up but can be used as a run-time event.

    NdisDeviceStateD1

    The network adapter can signal a pattern-match wake-up from device power states D1 and D0.

    NdisDeviceStateD2

    The network adapter can signal a pattern-match wake-up from device power states D2, D1, and D0.

    NdisDeviceStateD3

    The network adapter can signal a pattern-match wake-up from device power states D3, D2, D1, and D0.

  • MinLinkChangeWakeUp
    Reserved. NDIS ignores this member.

For Miniport Drivers

After the miniport driver completes initialization, both the protocol driver and NDIS can query the miniport driver with this OID to determine the following:

  • Whether the miniport driver is PM-aware.
  • The network adapter 's capabilities of indicating network wake-up events.

If the miniport driver returns NDIS_STATUS_SUCCESS to a query of OID_PNP_CAPABILITIES, NDIS considers the miniport driver to be PM-aware. If the miniport driver returns NDIS_STATUS_NOT_SUPPORTED, NDIS considers the miniport driver to be a legacy miniport driver that is not PM-aware.

When calling NdisMSetAttributesEx, a miniport driver that does not support wake-up capabilities but that can save and restore its miniport adapter state across a power-state transition can set the NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND flag. Setting this flag prevents NDIS from calling the driver's MiniportHalt function before the system transitions to a low-power (sleeping) state. However, if the miniport driver returns NDIS_STATUS_NOT_SUPPORTED in response to a query OID_PNP_CAPABILITIES, NDIS ignores the NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND flag and halts the miniport adapter if the system goes into a low-power state.

A miniport driver's network adapter can support any combination of wake-up events, including no wake-up events. A miniport driver can still support power management even if its network adapter cannot not signal wake-up events. In this case, the only power management OIDs that the miniport driver supports in addition to OID_PNP_CAPABILITIES are OID_PNP_QUERY_POWER and OID_PNP_SET_POWER.

If a miniport driver's network adapter does not support a particular wake-up event, the miniport driver should indicate an NDIS_DEVICE_POWER_STATE of NdisDeviceStateUnspecified for the wake-up event in the NDIS_PM_WAKE_UP_CAPABILITIES structure.

OID_PNP_CAPABILITIES only indicates the wake-up capabilities of a miniport driver's network adapter; it does not enable such capabilities. OID_PNP_ENABLE_WAKE_UP is used to enable a network adapter's wake-up capabilities.

For Intermediate Drivers

If the underlying network adapter is PM-aware, the intermediate driver should return NDIS_STATUS_SUCCESS to a query of OID_PNP_CAPABILITIES. In the NDIS_PM_WAKE_UP_CAPABILITIES structure returned by this OID, the intermediate driver should specify a device power state of NdisDeviceStateUnspecified for each wake-up capability (MinMagicPacketWakeUp or MinPatternWakeUp). Such a response indicates that the intermediate driver is PM-aware but does not manage a physical device.

If the underlying network adapter is not PM-aware, the intermediate driver should return NDIS_STATUS_NOT_SUPPORTED to a query of OID_PNP_CAPABILITIES.

Requirements

Header

ntddndis.h

See Also

Reference

Operational OIDs