NDIS miniport power management for NDIS 6.3

Hello All,

I am facing a problem with power management in my NDIS 630 miniport driver.
The device i am working on does not support WoL feature.

Problem faced:-> If i put the system in hibernate and wake it up the call MpInitializeEx is not getting called.because of which when the system comes up i am not able to disable the driver.

Implementation:
when registering the Power management attributes using “NdisMSetMiniportAttributes”, i set the PNDIS_PM_CAPABILITIES PowerManagementCapabilitiesEx struct to all “0”[as non of the parameters defined in the struct are valid for our device] . and initialize the header with version and length NDIS_PM_CAPABILITIES_REVISION_2 and NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2.

Some points which i have observed

If i set the PowerManagementCapabilitiesEx = NULL… my driver functionality works fine but the WHQL test PM_requirement fails saying the power management capabilities are not returned…

So Can any one tell me what i would be missing which is causing this issue.

-Jagadish

Your MiniportInitializeEx is not called again after resume from
hibernation because it is not supposed to. Instead, the miniport
should support power management and handle PM events.

Some early NDIS versions (before power management) indeed
unloaded miniports and initialized them again after hibernation;
this IIRC worked for compatibility with non-PM capable miniports
up to Win7(?) but they could finally drop this.
Just do the right thing and declare your PM capabilities properly.
– pa

On 11-Jul-2012 16:25, xxxxx@gmail.com wrote:

Hello All,

I am facing a problem with power management in my NDIS 630 miniport driver.
The device i am working on does not support WoL feature.

Problem faced:-> If i put the system in hibernate and wake it up the call MpInitializeEx is not getting called.because of which when the system comes up i am not able to disable the driver.

Implementation:
when registering the Power management attributes using “NdisMSetMiniportAttributes”, i set the PNDIS_PM_CAPABILITIES PowerManagementCapabilitiesEx struct to all “0”[as non of the parameters defined in the struct are valid for our device] . and initialize the header with version and length NDIS_PM_CAPABILITIES_REVISION_2 and NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2.

Some points which i have observed

If i set the PowerManagementCapabilitiesEx = NULL… my driver functionality works fine but the WHQL test PM_requirement fails saying the power management capabilities are not returned…

So Can any one tell me what i would be missing which is causing this issue.

-Jagadish

> Some early NDIS versions (before power management) indeed

unloaded miniports and initialized them again after hibernation;

Yes, especially with WinCE.


Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com