Reporting NDIS Selective Suspend Capabilities

Starting with NDIS 6.30, miniport drivers must report whether the driver has enabled the support for NDIS selective suspend. The support for NDIS selective suspend is enabled or disabled through the setting of the *SelectiveSuspend standardized INF keyword. For more information about this INF keyword, see Standardized INF Keywords for NDIS Selective Suspend.

When NDIS calls the driver's MiniportInitializeEx function, the miniport driver reports its support for NDIS selective suspend support by following these steps:

  1. The driver initializes an NDIS_PM_CAPABILITIES structure with the power management capabilities of the underlying hardware.

    If the driver enables the support for NDIS selective suspend, it must set the members of the NDIS_PM_CAPABILITIES structure as follows:

    • The miniport driver must specify NDIS_PM_CAPABILITIES_REVISION_2 and NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2 for the revision and length of the NDIS_PM_CAPABILITIES structure within the structure's Header member.
    • If the *SelectiveSuspend keyword has a value of one, the miniport driver support for NDIS selective suspend is enabled. The miniport driver reports this by setting the NDIS_PM_SELECTIVE_SUSPEND_SUPPORTED flag within the Flags member of this structure.
  2. Once it has initialized the NDIS_PM_CAPABILITIES structure, the miniport driver sets the PowerManagementCapabilitiesEx member of the NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES structure to point to the initialized NDIS_PM_CAPABILITIES structure. The miniport driver passes a pointer to an NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES structure in the MiniportAttributes parameter when the driver calls the NdisMSetMiniportAttributes function.

The method that is used by miniport drivers to report the support status of NDIS selective suspend is based on the NDIS 6.20 method for reporting power management capabilities. For more information about this method, see Reporting Power Management Capabilities.

For more information about the adapter initialization process, see Initializing a Miniport Adapter.