OID_PNP_CAPABILITIES

The OID_PNP_CAPABILITIES 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:

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

The members of this structure contain the following information:

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 network 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 network 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 value 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.

Note  For information about how NDIS 6.20 and later miniport drivers report power management capabilities, see Reporting Power Management Capabilities.

Requirements

Version

Supported in NDIS 6.0 and NDIS 6.1. For NDIS 6.20 and later, use OID_PM_CURRENT_CAPABILITIES instead.

Header

Ntddndis.h (include Ndis.h)

See also

NDIS_DEVICE_POWER_STATE

NdisMSetAttributesEx

OID_PM_CURRENT_CAPABILITIES

OID_PNP_ENABLE_WAKE_UP

OID_PNP_QUERY_POWER

OID_PNP_SET_POWER

Reporting Power Management Capabilities