PoSTartNextPowerIrp needs the current irp stack location to be valid and
uses the DeviceObject in the stack location (how else would it work for
the same irp across all device objects in a device stack?). This is
also why you must call PoStartNextPowerIrp before calling
IoSkipCurrentIrpStackLocation. Nearly all kernel APIs trust the caller
to provide a valid structure/memory/pointers, it is up to the client to
ensure validity.
The requirement for the device object is called out in the WDK.
scenario when somebody uses XP RTM + some hotfix where it could do
something. OK, I will call it, for completeness, too.
BTW, I saw a crashdump from XP, probably SP2, when this call with
already completed IRP (because of a bug) caused BSOD. It used some field
from IRP (DeviceObject?), blindly dereferenced it and it was NULL.
Best regards,
Michal Vodicka
UPEK, Inc.
[xxxxx@upek.com, http://www.upek.com]
> ----------
> From:
xxxxx@lists.osr.com[SMTP:xxxxx@lists.osr.com
] on behalf of Doron Holan[SMTP:xxxxx@microsoft.com]
> Reply To: Windows System Software Devs Interest List
> Sent: Friday, July 20, 2007 11:51 PM
> To: Windows System Software Devs Interest List
> Subject: RE: [ntdev] WaitWake IRP and PoStartNextPowerIrp
>
> KMDF calls PoStartNextPowerIrp on WW irps for completeness, although
> look at the xpsp2 implementation of the API, it does nothing for WW
> irps.
>
> d
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Michal Vodicka
> Sent: Thursday, July 19, 2007 3:36 PM
> To: Windows System Software Devs Interest List
> Subject: RE: [ntdev] WaitWake IRP and PoStartNextPowerIrp
>
> I know it, too
I’d just like to know if I ever need to call this
API
> for WaitWake IRP at older OSes. It is because I’m refactoring related
> code and if it has to be called, I should be even more carefull and
> don’t forget to call it in some exceptional cases.
>
> According to docs, there should be no need for it. But WDK samples
call
> it so I’d like to know, why.
>
> BTW, does KMDF call it for WW IRP?
>
> Best regards,
>
> Michal Vodicka
> UPEK, Inc.
> [xxxxx@upek.com, http://www.upek.com]
>
>
> > ----------
> > From:
>
xxxxx@lists.osr.com[SMTP:xxxxx@lists.osr.com
>] on behalf of Doron Holan[SMTP:xxxxx@microsoft.com]
> > Reply To: Windows System Software Devs Interest List
> > Sent: Friday, July 20, 2007 12:27 AM
> > To: Windows System Software Devs Interest List
> > Subject: RE: [ntdev] WaitWake IRP and PoStartNextPowerIrp
> >
> > You can still call the api no vista, it is no op there.
> >
> > D
> >
> >
> > -----Original Message-----
> > From: “Michal Vodicka”
> > To: “Windows System Software Devs Interest List”
> > Sent: 07/19/07 3:02 PM
> > Subject: RE: [ntdev] WaitWake IRP and PoStartNextPowerIrp
> >
> > Yes, I know. But I want to have one binary for XP, w2k3 and Vista.
> >
> > Best regards,
> >
> > Michal Vodicka
> > UPEK, Inc.
> > [xxxxx@upek.com, http://www.upek.com]
> >
> >
> > > ----------
> > > From:
>
xxxxx@lists.osr.com[SMTP:xxxxx@lists.osr.com
>] on behalf of Doron Holan[SMTP:xxxxx@microsoft.com]
> > > Reply To: Windows System Software Devs Interest List
> > > Sent: Thursday, July 19, 2007 11:47 PM
> > > To: Windows System Software Devs Interest List
> > > Subject: RE: [ntdev] WaitWake IRP and PoStartNextPowerIrp
> > >
> > > There can only be one WW irp in the stack at once, I think that it
> is
> > > required for WW irps, but I need to double check. Note that
> > > PoREquestPowerIrp is not required for any power irp on vista or
> later.
> > >
> > > d
> > >
> > > -----Original Message-----
> > > From: xxxxx@lists.osr.com
> > > [mailto:xxxxx@lists.osr.com] On Behalf Of Michal
> Vodicka
> > > Sent: Thursday, July 19, 2007 2:02 PM
> > > To: Windows System Software Devs Interest List
> > > Subject: [ntdev] WaitWake IRP and PoStartNextPowerIrp
> > >
> > > WDK docs states PoStartNextPowerIrp() has to be called for IRP_
> > > MN_QUERY_POWER and IRP_MN_SET_POWER only. However, WDK USB samples
> call
> > > it also for IRP_MN_WAIT_WAKE. I presume it is superfluous and>
> hopefully
> > > benign but want to be sure. Has anybody ever encountered a
situation
> > > where it was necessary or wreaked havoc? Any OS/SP version.
Thanks.
> > >
> > > Best regards,
> > >
> > > Michal Vodicka
> > > UPEK, Inc.
> > > [xxxxx@upek.com, http://www.upek.com]
> > >
> > >
> > > —
> > > Questions? First check the Kernel Driver FAQ at
> > > http://www.osronline.com/article.cfm?id=256
> > >
> > > To unsubscribe, visit the List Server section of OSR Online at
> > > http://www.osronline.com/page.cfm?name=ListServer
> > >
> > > —
> > > Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
> > >
> > > To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
> > >
> >
> > —
> > Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
> >
> > To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
> >
> > —
> > Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
> >
> > To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
> >
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
> —
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer
>
—
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer