Hi there
Due to recommondation from many ntdev-users I installed the driver
verifier to check my 1394 device driver.
If I unplug my device after using it SoftICE pops up and I can see an
entry of driver verifier, telling me a FATAL_UNHANDLED_HARD_ERROR has
occurred. Also an explanation appears:
WDM DRIVER ERROR: [1394diag.sys @ 0xF1F2EED6] An IRP dispatch handler
(F1F2EED6) has rteturned a status that is inconsistent wit the IRP’s
IoStatus.Status field. (Irp = 83A4EED8 - Irp->IoStatus.Status = C000000E
if I check the DDK documentation for FATAL_UNHANDLED_HARD_ERROR all I
can find is that it normally appears very infrequently, well that
doesn’t help me a lot. I couldn’t find the Irp mentioned in the error
message in the debug output of my driver although as far as I know I
wrote all the Irp’s to the trace window. Also the address didn’t help me
a lot because it was placed outside or just before the beginning of my
dispatch routine.
Can anybody tell me more about this error message than the DDK doc does?
I would be greatful!
regards
Daniel
hello
it’s me again. Don’t look any further. I actually found out, that in my
dispatch routine I returned STATUS_SUCCESS while the ioStatus.Status
field was filled out with STATUS_NO_SUCH_DEVICE. It never was a problem,
but driver verifier didn’t like it and complained after I activated it.
It is actually quite strange that you have to return two times the same
values…, what happens if you don’t?
regards
Daniel
Daniel Luethi wrote:
Hi there
Due to recommondation from many ntdev-users I installed the driver
verifier to check my 1394 device driver.
If I unplug my device after using it SoftICE pops up and I can see an
entry of driver verifier, telling me a FATAL_UNHANDLED_HARD_ERROR has
occurred. Also an explanation appears:
WDM DRIVER ERROR: [1394diag.sys @ 0xF1F2EED6] An IRP dispatch handler
(F1F2EED6) has rteturned a status that is inconsistent wit the IRP’s
IoStatus.Status field. (Irp = 83A4EED8 - Irp->IoStatus.Status = C000000E
if I check the DDK documentation for FATAL_UNHANDLED_HARD_ERROR all I
can find is that it normally appears very infrequently, well that
doesn’t help me a lot. I couldn’t find the Irp mentioned in the error
message in the debug output of my driver although as far as I know I
wrote all the Irp’s to the trace window. Also the address didn’t help me
a lot because it was placed outside or just before the beginning of my
dispatch routine.
Can anybody tell me more about this error message than the DDK doc does?
I would be greatful!
regards
Daniel
On Wed, 2004-08-25 at 04:08, Daniel Luethi wrote:
It is actually quite strange that you have to return two times the same
values…, what happens if you don’t?
This is a matter of proper protocol. You’re depending on undependable
behavior in the drivers above you if you violate it. The return value
of IoCallDriver (== the value you return from your dispatch routine) is
less authoritative than the one in the IRP, unless of course it is
STATUS_PENDING, but I’m sure some driver writers have done differently,
right or wrong. There’s a great powerpoint by Adrian Oney somewhere in
the WinHEC slides (which I think are available on microsoft.com) that
discusses the IRP completion protocol, IoMarkIrpPending, and so on. You
should try to find and read it if you can. Also, Walter Oney’s book has
lots of good IRP-handling discussion.
-sd
http://msmvps.com/kernelmustard
> STATUS_PENDING, but I’m sure some driver writers have done differently,
right or wrong. There’s a great powerpoint by Adrian Oney somewhere in
the WinHEC slides (which I think are available on microsoft.com) that
discusses the IRP completion protocol, IoMarkIrpPending, and so on. You
Nothing describes the IRP completion protocol better then reverse-engineered
IoCompleteRequest, IopCompleteRequest, and IopSynchronousServiceTail.
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com
I totally agreed with Max. All completion tricks became crystal clear to me
once I did that.
BTW, do MVPs have privilege to access NT source code? I can imagine that
will certainly save a lot of time.
Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com
-----Original Message-----
From: Maxim S. Shatskih [mailto:xxxxx@storagecraft.com]
Sent: Wednesday, August 25, 2004 7:21 AM
To: Windows System Software Devs Interest List
Subject: Re: Re:[ntdev] FATAL_UNHANDLED_HARD_ERROR
> STATUS_PENDING, but I’m sure some driver writers have done
differently,
> right or wrong. There’s a great powerpoint by Adrian Oney
somewhere in
> the WinHEC slides (which I think are available on
microsoft.com) that
> discusses the IRP completion protocol, IoMarkIrpPending,
and so on. You
Nothing describes the IRP completion protocol better then
reverse-engineered
IoCompleteRequest, IopCompleteRequest, and IopSynchronousServiceTail.
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: xxxxx@ati.com
To unsubscribe send a blank email to xxxxx@lists.osr.com
Microsoft has made efforts to open up source access to various groups and
individuals outside of Microsoft through its Code Center Premium program.
This includes MVPs who want to participate.
=====================
Mark Roddy
From: Calvin Guan [mailto:xxxxx@ati.com]
Sent: Thursday, August 26, 2004 11:15 AM
To: Windows System Software Devs Interest List
Subject: RE: Re:[ntdev] FATAL_UNHANDLED_HARD_ERROR
I totally agreed with Max. All completion tricks became crystal clear to me
once I did that.
BTW, do MVPs have privilege to access NT source code? I can imagine that
will certainly save a lot of time.
Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com
-----Original Message-----
From: Maxim S. Shatskih [mailto:xxxxx@storagecraft.com
mailto:xxxxx ]
> Sent: Wednesday, August 25, 2004 7:21 AM
> To: Windows System Software Devs Interest List
> Subject: Re: Re:[ntdev] FATAL_UNHANDLED_HARD_ERROR
>
>
> > STATUS_PENDING, but I’m sure some driver writers have done
> differently,
> > right or wrong. There’s a great powerpoint by Adrian Oney
> somewhere in
> > the WinHEC slides (which I think are available on
> microsoft.com) that
> > discusses the IRP completion protocol, IoMarkIrpPending,
> and so on. You
>
> Nothing describes the IRP completion protocol better then
> reverse-engineered
> IoCompleteRequest, IopCompleteRequest, and IopSynchronousServiceTail.
>
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> xxxxx@storagecraft.com
> http://www.storagecraft.com http:
>
>
> —
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
http:
You are currently subscribed to ntdev as: xxxxx@ati.com
To unsubscribe send a blank email to xxxxx@lists.osr.com
—
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com</http:></http:></mailto:xxxxx>
Calvin Guan wrote:
I totally agreed with Max. All completion tricks became crystal clear to
me once I did that.
Seeing the code helps, but it’s so complex that it only helps SOME.
In terms of understanding STATUS_PENDING and its associated subtleties,
there are several good articles on STATUS_PENDING and friends on OSR Online:
Properly Pending IRPs: http://www.osronline.com/article.cfm?id=21
Tony Mason’s landmark article on I/O Completion (written in 1997, and
still the best thing around): http://www.osronline.com/article.cfm?id=83
Not to mention the article to which this entire community contributed:
http://www.osronline.com/article.cfm?article=214
Searching OSR Online for “STATUS_PENDING” returns all of these,
Peter
OSR
OK, got really a lot to study now, thanks for all the links and hints!
Daniel
PeterGV wrote:
Calvin Guan wrote:
> I totally agreed with Max. All completion tricks became crystal clear
> to me once I did that.
>
Seeing the code helps, but it’s so complex that it only helps SOME.
In terms of understanding STATUS_PENDING and its associated subtleties,
there are several good articles on STATUS_PENDING and friends on OSR
Online:
Properly Pending IRPs: http://www.osronline.com/article.cfm?id=21
Tony Mason’s landmark article on I/O Completion (written in 1997, and
still the best thing around): http://www.osronline.com/article.cfm?id=83
Not to mention the article to which this entire community contributed:
http://www.osronline.com/article.cfm?article=214
Searching OSR Online for “STATUS_PENDING” returns all of these,
Peter
OSR
I tried to post this yesterday, but it never made it.
Steve Dispensa wrote…
There’s a great powerpoint by Adrian Oney somewhere in
the WinHEC slides (which I think are available on microsoft.com) that
discusses the IRP completion protocol, IoMarkIrpPending, and so on. You
should try to find and read it if you can.
WDM IRP Voodoo, from WinHEC 2003, may be what Steve was referring to:
http://download.microsoft.com/download/c/f/1/cf1806ad-5a4f-4f7d-a5b2-07fdb59a7adb/WH03_DDT22.exe
-Dan