From: hitesh on
Hi all,
i am writing a storport miniport driver.
currently i am not handling read/write command in my start_io routine.
I am handling inquiry, report luns and read capacity.
if i install the driver in device manager->scan for h/w changes ->
install driver for my h/w, then it installs correctly and i am able to
see the disk listed in device manager, as i am not hanlding read/write
it shown disk uninitialized.
i am also able to disable and enable the device.
but the moment i restart the machine whenever driver loads, my machine
crashes everytime it loads my driver.

so my question is:
1) what is the difference in loading the driver during windows booting
and installing from device manager?
2) if there is difference then what a person need to handle extra
during boot time? (please note that i am not using it for any boot
disk, my primary OS disk is connected with other ATA controller)

i have connected WinDbg and tried to find out the problem,
here is the dump, plz look @ it and let me know if you can find the
solution,

*******************************************************************************
*
*
* Bugcheck
Analysis *
*
*
*******************************************************************************

DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pageable (or completely invalid)
address at an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: 0000000000000000, memory referenced
Arg2: 000000000000000a, IRQL
Arg3: 0000000000000008, value 0 = read operation, 1 = write operation
Arg4: 0000000000000000, address which referenced memory

Debugging Details:
------------------


READ_ADDRESS: 0000000000000000

CURRENT_IRQL: a

FAULTING_IP:
+35e952f00fddfdc
00000000`00000000 ?? ???

PROCESS_NAME: Idle

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0xD1

TRAP_FRAME: fffffadf954399c0 -- (.trap 0xfffffadf954399c0)
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=fffffadfa0ab0820 rbx=0000000000000000 rcx=fffffadfa06c2008
rdx=fffffadfa06c41b0 rsi=0000000000000000 rdi=0000000000000000
rip=0000000000000000 rsp=fffffadf95439b58 rbp=fffffadf95439c30
r8=000000c42dfdf9a7 r9=fffff8000118df28 r10=fffffadf9509d450
r11=fffffadfa06c4e70 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up ei ng nz na pe nc
00000000`00000000 ?? ???
Resetting default scope

LAST_CONTROL_TRANSFER: from fffff800010c8ede to fffff8000104b350

FAILED_INSTRUCTION_ADDRESS:
+35e952f00fddfdc
00000000`00000000 ?? ???

STACK_TEXT:
fffffadf`95439148 fffff800`010c8ede : 00000000`00000000
00000000`00000000 00000000`000000d1 fffff800`0106144e : nt!
RtlpBreakWithStatusInstruction
fffffadf`95439150 fffff800`010ca4c4 : fffff800`00000003
00000000`000000d1 00000000`00000000 00000000`0000000a : nt!
KiBugCheckDebugBreak+0x1e
fffffadf`954391b0 fffff800`010502d4 : 00000000`00000002
00000000`00000000 00000000`00000002 fffffadf`a0bd75d0 : nt!
KeBugCheck2+0x676
fffffadf`95439800 fffff800`0104fef4 : 00000000`0000000a
00000000`00000000 00000000`0000000a 00000000`00000008 : nt!KeBugCheckEx
+0x104
fffffadf`95439840 fffff800`0104ef07 : fffffadf`a0aaa8c0
fffffadf`94ffc488 00000000`00000000 fffffadf`9509b180 : nt!
KiBugCheckDispatch+0x74
fffffadf`954399c0 00000000`00000000 : fffff800`01051089
00000000`00000000 fffff800`01050d00 00000000`00000246 : nt!KiPageFault
+0x207


STACK_COMMAND: kb

FOLLOWUP_IP:
nt!KiPageFault+207
fffff800`0104ef07 488d05f22f0000 lea rax,[nt!
ExpInterlockedPopEntrySListResume (fffff800`01051f00)]

SYMBOL_STACK_INDEX: 5

SYMBOL_NAME: nt!KiPageFault+207

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: nt

IMAGE_NAME: ntkrnlmp.exe

DEBUG_FLR_IMAGE_TIMESTAMP: 42436123

FAILURE_BUCKET_ID: X64_0xD1_CODE_AV_NULL_IP_nt!KiPageFault+207

BUCKET_ID: X64_0xD1_CODE_AV_NULL_IP_nt!KiPageFault+207

Followup: MachineOwner
-----------------------------------------------------------------------

thanks,
Hitesh
From: hitesh on
On Jul 13, 3:25 pm, hitesh <hitesh.ughr...(a)gmail.com> wrote:
> Hi all,
> i am writing a storport miniport driver.
> currently i am not handling read/write command in my start_io routine.
> I am handling inquiry, report luns and read capacity.
> if i install the driver in device manager->scan for h/w changes ->
> install driver for my h/w, then it installs correctly and i am able to
> see the disk listed in device manager, as i am not hanlding read/write
> it shown disk uninitialized.
> i am also able to disable and enable the device.
> but the moment i restart the machine whenever driver loads, my machine
> crashes everytime it loads my driver.
>
> so my question is:
> 1) what is the difference in loading the driver during windows booting
> and installing from device manager?
> 2) if there is difference then what a person need to handle extra
> during boot time? (please note that i am not using it for any boot
> disk, my primary OS disk is connected with other ATA controller)
>
> i have connected WinDbg and tried to find out the problem,
> here is the dump, plz look @ it and let me know if you can find the
> solution,
>
> ***************************************************************************­****
> *
> *
> *                        Bugcheck
> Analysis                                    *
> *
> *
> ***************************************************************************­****
>
> DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
> An attempt was made to access a pageable (or completely invalid)
> address at an
> interrupt request level (IRQL) that is too high.  This is usually
> caused by drivers using improper addresses.
> If kernel debugger is available get stack backtrace.
> Arguments:
> Arg1: 0000000000000000, memory referenced
> Arg2: 000000000000000a, IRQL
> Arg3: 0000000000000008, value 0 = read operation, 1 = write operation
> Arg4: 0000000000000000, address which referenced memory
>
> Debugging Details:
> ------------------
>
> READ_ADDRESS:  0000000000000000
>
> CURRENT_IRQL:  a
>
> FAULTING_IP:
> +35e952f00fddfdc
> 00000000`00000000 ??              ???
>
> PROCESS_NAME:  Idle
>
> DEFAULT_BUCKET_ID:  DRIVER_FAULT
>
> BUGCHECK_STR:  0xD1
>
> TRAP_FRAME:  fffffadf954399c0 -- (.trap 0xfffffadf954399c0)
> NOTE: The trap frame does not contain all registers.
> Some register values may be zeroed or incorrect.
> rax=fffffadfa0ab0820 rbx=0000000000000000 rcx=fffffadfa06c2008
> rdx=fffffadfa06c41b0 rsi=0000000000000000 rdi=0000000000000000
> rip=0000000000000000 rsp=fffffadf95439b58 rbp=fffffadf95439c30
>  r8=000000c42dfdf9a7  r9=fffff8000118df28 r10=fffffadf9509d450
> r11=fffffadfa06c4e70 r12=0000000000000000 r13=0000000000000000
> r14=0000000000000000 r15=0000000000000000
> iopl=0         nv up ei ng nz na pe nc
> 00000000`00000000 ??              ???
> Resetting default scope
>
> LAST_CONTROL_TRANSFER:  from fffff800010c8ede to fffff8000104b350
>
> FAILED_INSTRUCTION_ADDRESS:
> +35e952f00fddfdc
> 00000000`00000000 ??              ???
>
> STACK_TEXT:
> fffffadf`95439148 fffff800`010c8ede : 00000000`00000000
> 00000000`00000000 00000000`000000d1 fffff800`0106144e : nt!
> RtlpBreakWithStatusInstruction
> fffffadf`95439150 fffff800`010ca4c4 : fffff800`00000003
> 00000000`000000d1 00000000`00000000 00000000`0000000a : nt!
> KiBugCheckDebugBreak+0x1e
> fffffadf`954391b0 fffff800`010502d4 : 00000000`00000002
> 00000000`00000000 00000000`00000002 fffffadf`a0bd75d0 : nt!
> KeBugCheck2+0x676
> fffffadf`95439800 fffff800`0104fef4 : 00000000`0000000a
> 00000000`00000000 00000000`0000000a 00000000`00000008 : nt!KeBugCheckEx
> +0x104
> fffffadf`95439840 fffff800`0104ef07 : fffffadf`a0aaa8c0
> fffffadf`94ffc488 00000000`00000000 fffffadf`9509b180 : nt!
> KiBugCheckDispatch+0x74
> fffffadf`954399c0 00000000`00000000 : fffff800`01051089
> 00000000`00000000 fffff800`01050d00 00000000`00000246 : nt!KiPageFault
> +0x207
>
> STACK_COMMAND:  kb
>
> FOLLOWUP_IP:
> nt!KiPageFault+207
> fffff800`0104ef07 488d05f22f0000  lea     rax,[nt!
> ExpInterlockedPopEntrySListResume (fffff800`01051f00)]
>
> SYMBOL_STACK_INDEX:  5
>
> SYMBOL_NAME:  nt!KiPageFault+207
>
> FOLLOWUP_NAME:  MachineOwner
>
> MODULE_NAME: nt
>
> IMAGE_NAME:  ntkrnlmp.exe
>
> DEBUG_FLR_IMAGE_TIMESTAMP:  42436123
>
> FAILURE_BUCKET_ID:  X64_0xD1_CODE_AV_NULL_IP_nt!KiPageFault+207
>
> BUCKET_ID:  X64_0xD1_CODE_AV_NULL_IP_nt!KiPageFault+207
>
> Followup: MachineOwner
> -----------------------------------------------------------------------
>
> thanks,
> Hitesh

just to add more info,
i am developing it for windows xp 64 bit.
thanks,
From: eagersh on
On Jul 13, 5:16 am, hitesh <hitesh.ughr...(a)gmail.com> wrote:
> On Jul 13, 3:25 pm, hitesh <hitesh.ughr...(a)gmail.com> wrote:
>
>
>
> > Hi all,
> > i am writing a storport miniport driver.
> > currently i am not handling read/write command in my start_io routine.
> > I am handling inquiry, report luns and read capacity.
> > if i install the driver in device manager->scan for h/w changes ->
> > install driver for my h/w, then it installs correctly and i am able to
> > see the disk listed in device manager, as i am not hanlding read/write
> > it shown disk uninitialized.
> > i am also able to disable and enable the device.
> > but the moment i restart the machine whenever driver loads, my machine
> > crashes everytime it loads my driver.
>
> > so my question is:
> > 1) what is the difference in loading the driver during windows booting
> > and installing from device manager?
> > 2) if there is difference then what a person need to handle extra
> > during boot time? (please note that i am not using it for any boot
> > disk, my primary OS disk is connected with other ATA controller)
>
> > i have connected WinDbg and tried to find out the problem,
> > here is the dump, plz look @ it and let me know if you can find the
> > solution,
>
> > ***************************************************************************­****
> > *
> > *
> > *                        Bugcheck
> > Analysis                                    *
> > *
> > *
> > ***************************************************************************­****
>
> > DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
> > An attempt was made to access a pageable (or completely invalid)
> > address at an
> > interrupt request level (IRQL) that is too high.  This is usually
> > caused by drivers using improper addresses.
> > If kernel debugger is available get stack backtrace.
> > Arguments:
> > Arg1: 0000000000000000, memory referenced
> > Arg2: 000000000000000a, IRQL
> > Arg3: 0000000000000008, value 0 = read operation, 1 = write operation
> > Arg4: 0000000000000000, address which referenced memory
>
> > Debugging Details:
> > ------------------
>
> > READ_ADDRESS:  0000000000000000
>
> > CURRENT_IRQL:  a
>
> > FAULTING_IP:
> > +35e952f00fddfdc
> > 00000000`00000000 ??              ???
>
> > PROCESS_NAME:  Idle
>
> > DEFAULT_BUCKET_ID:  DRIVER_FAULT
>
> > BUGCHECK_STR:  0xD1
>
> > TRAP_FRAME:  fffffadf954399c0 -- (.trap 0xfffffadf954399c0)
> > NOTE: The trap frame does not contain all registers.
> > Some register values may be zeroed or incorrect.
> > rax=fffffadfa0ab0820 rbx=0000000000000000 rcx=fffffadfa06c2008
> > rdx=fffffadfa06c41b0 rsi=0000000000000000 rdi=0000000000000000
> > rip=0000000000000000 rsp=fffffadf95439b58 rbp=fffffadf95439c30
> >  r8=000000c42dfdf9a7  r9=fffff8000118df28 r10=fffffadf9509d450
> > r11=fffffadfa06c4e70 r12=0000000000000000 r13=0000000000000000
> > r14=0000000000000000 r15=0000000000000000
> > iopl=0         nv up ei ng nz na pe nc
> > 00000000`00000000 ??              ???
> > Resetting default scope
>
> > LAST_CONTROL_TRANSFER:  from fffff800010c8ede to fffff8000104b350
>
> > FAILED_INSTRUCTION_ADDRESS:
> > +35e952f00fddfdc
> > 00000000`00000000 ??              ???
>
> > STACK_TEXT:
> > fffffadf`95439148 fffff800`010c8ede : 00000000`00000000
> > 00000000`00000000 00000000`000000d1 fffff800`0106144e : nt!
> > RtlpBreakWithStatusInstruction
> > fffffadf`95439150 fffff800`010ca4c4 : fffff800`00000003
> > 00000000`000000d1 00000000`00000000 00000000`0000000a : nt!
> > KiBugCheckDebugBreak+0x1e
> > fffffadf`954391b0 fffff800`010502d4 : 00000000`00000002
> > 00000000`00000000 00000000`00000002 fffffadf`a0bd75d0 : nt!
> > KeBugCheck2+0x676
> > fffffadf`95439800 fffff800`0104fef4 : 00000000`0000000a
> > 00000000`00000000 00000000`0000000a 00000000`00000008 : nt!KeBugCheckEx
> > +0x104
> > fffffadf`95439840 fffff800`0104ef07 : fffffadf`a0aaa8c0
> > fffffadf`94ffc488 00000000`00000000 fffffadf`9509b180 : nt!
> > KiBugCheckDispatch+0x74
> > fffffadf`954399c0 00000000`00000000 : fffff800`01051089
> > 00000000`00000000 fffff800`01050d00 00000000`00000246 : nt!KiPageFault
> > +0x207
>
> > STACK_COMMAND:  kb
>
> > FOLLOWUP_IP:
> > nt!KiPageFault+207
> > fffff800`0104ef07 488d05f22f0000  lea     rax,[nt!
> > ExpInterlockedPopEntrySListResume (fffff800`01051f00)]
>
> > SYMBOL_STACK_INDEX:  5
>
> > SYMBOL_NAME:  nt!KiPageFault+207
>
> > FOLLOWUP_NAME:  MachineOwner
>
> > MODULE_NAME: nt
>
> > IMAGE_NAME:  ntkrnlmp.exe
>
> > DEBUG_FLR_IMAGE_TIMESTAMP:  42436123
>
> > FAILURE_BUCKET_ID:  X64_0xD1_CODE_AV_NULL_IP_nt!KiPageFault+207
>
> > BUCKET_ID:  X64_0xD1_CODE_AV_NULL_IP_nt!KiPageFault+207
>
> > Followup: MachineOwner
> > -----------------------------------------------------------------------
>
> > thanks,
> > Hitesh
>
> just to add more info,
> i am developing it for windows xp 64 bit.
> thanks,

Your dump information is not very useful. Install correct symbols and
you could see a right stack during the crash.

Igor Sharovar