Power Management Question

Hello everybody,

  1. Is DO_POWER_NOOP flag (for DeviceObjects) supported in Win2K ?

[I found no mention of it in the Win2K DDK, but Walter Oney’s book (Pg 387-388) talks about it]

  1. If the underlying Bus Driver sets DO_POWER_PAGABLE for the PDO, then is
    it MANDATORY for my Function Driver to do Power Management ? Or is it
    optional ?

If its optional, how can I specify that I will not be participating in
Power Management (if DO_POWER_NOOP is not supported) ?

Thanks for the information!

Puja

  1. DO_POWER_NOOP is supported in Win2k.
  2. It’s not mandatory. But generally all the IRPs are passed down except in
    some cases IRP_MN_QUERY_POWER. But failing other IRPs might hamper the power
    management of the system, but it depends on the kind of device again.

-----Original Message-----
From: xxxxx@usa.net [mailto:xxxxx@usa.net]
Sent: Wednesday, August 23, 2000 10:59 AM
To: NT Developers Interest List
Subject: [ntdev] Power Management Question

Hello everybody,

  1. Is DO_POWER_NOOP flag (for DeviceObjects) supported in Win2K ?

[I found no mention of it in the Win2K DDK, but Walter Oney’s book (Pg 387-388) talks about it]

  1. If the underlying Bus Driver sets DO_POWER_PAGABLE for the PDO, then is
    it MANDATORY for my Function Driver to do Power Management ? Or is it
    optional ?

If its optional, how can I specify that I will not be participating in
Power Management (if DO_POWER_NOOP is not supported) ?

Thanks for the information!

Puja


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)

Guru,

The DO_POWER_NOOP is *not* implemented in Windows 2000 or Windows 98/Me.
Drivers should never set this flag and doing so will cause a driver
verifier fault.

*All* drivers in Windows 2000 and 98/Me must support power management,
regardless of the DO_POWER_PAGEABLE flag. Function drivers must set the
DO_POWER_PAGABLE flag to the same value as the underlying bus driver.
Basically, the general rule of thumb is to set DO_POWER_PAGABLE unless
your device is on the paging path.

The DO_POWER_PAGABLE flag primarily controls what IRQL power IRPs are
sent to your driver. If it’s not set, then power IRPs are sent at a
high IRQL that cannot tolerate page faults. Regardless, a function
driver and its lower bus/filter drivers generally need to be running at
the same IRQL when processing power IRPs which is why they need to have
the same DO_POWER_PAGABLE settings on their device objects.

If you’re adding power management code to a driver, you should grab code
out of the toaster function driver sample from the DDK.

Sandy Spinrad
Device Driver Evangelist
Microsoft Corporation

P.S. Adrian Oney talked about power management at WinHEC 2000. If you
have a fast internet connection, you can view this talk online at
http://www.microsoft.com/winhec/sessions/driverpresents.htm.

-----Original Message-----
From: Guru Huchurao
Sent: Thursday, August 24, 2000 8:13 AM
To: NT Developers Interest List
Subject: [ntdev] RE: Power Management Question

  1. DO_POWER_NOOP is supported in Win2k.
  2. It’s not mandatory. But generally all the IRPs are passed down except
    in
    some cases IRP_MN_QUERY_POWER. But failing other IRPs might hamper the
    power
    management of the system, but it depends on the kind of device again.

-----Original Message-----
From: xxxxx@usa.net [mailto:xxxxx@usa.net]
Sent: Wednesday, August 23, 2000 10:59 AM
To: NT Developers Interest List
Subject: [ntdev] Power Management Question

Hello everybody,

  1. Is DO_POWER_NOOP flag (for DeviceObjects) supported in Win2K ?

[I found no mention of it in the Win2K DDK, but Walter Oney’s book (Pg 387-388) talks about it]

  1. If the underlying Bus Driver sets DO_POWER_PAGABLE for the PDO, then
    is
    it MANDATORY for my Function Driver to do Power Management ? Or is it
    optional ?

If its optional, how can I specify that I will not be participating in
Power Management (if DO_POWER_NOOP is not supported) ?

Thanks for the information!

Puja


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)


You are currently subscribed to ntdev as: xxxxx@exchange.microsoft.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)