Can you hibernate a Win2k, WinXp system that doesn't use MS SCSIPORT driver.

I am trying to get hibernation to work on our system. I have run into a
BSOD that I cannot debug because I do not have MS source. We do not use the
MS SCSIPORT driver. I have a feeling the BSOD is related to the OS trying
to get sole access to the HAB directly instead of through the Port driver.
Here’s my BSOD dump. Is my assumption correct or wrong?

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

Use !analyzebugcheck -v to get more information.

BugCheck D1, {0, 2, 1, f3cdc08c}
Fault occurred in driver hiber_diskdump.sys (
hiber_diskdump!DriverEntry+0x20 )
f3cdc08c f3ab rep stosd
Followup : MachineOwner

ntoskrnl!RtlpBreakWithStatusInstruction:
8050d064 cc int 3
WARNING: Stack unwind information not available. Following frames may be
wrong.
kd> kv
ChildEBP RetAddr Args to Child
f8d7ef64 805226a5 00000003 00000000 000000d1
ntoskrnl!RtlpBreakWithStatusInstruction (FPO: [1,0,0])
f8d7efb0 80522dea 00000003 00000000 f3cdc08c
ntoskrnl!KiBugCheckDebugBreak+0x19 (FPO: [Non-Fpo])
f8d7f378 804fc1bb 000000d1 00000000 00000002 ntoskrnl!KeBugCheck2+0x43c
(FPO: [Non-Fpo])
f8d7f398 804d7c50 0000000a 00000000 00000002 ntoskrnl!KeBugCheckEx+0x19
(FPO: [Non-Fpo])
f8d7f398 f3cdc08c 0000000a 00000000 00000002 ntoskrnl!KiTrap0E+0x2ad (FPO:
[0,0] TrapFrame @ f8d7f3b4)
f8d7f430 80520734 00000000 80e4ca18 89176a45 hiber_diskdump!DriverEntry+0x20
(FPO: [EBP 0xf8d7f474] [2,0,4])
f8d7f448 806385dd 80e4ca18 00000000 00000000
ntoskrnl!IoInitializeDumpStack+0x1e (FPO: [2,0,3])
f8d7f4e8 806bd99f 8069fed8 f8d7f57c f8d7f5b8
ntoskrnl!PopSaveHiberContext+0x13d (FPO: [1,33,3])
f8d7f4fc 80639eb3 00000003 806384a0 ff9ca9f8
hal!HaliLegacyPowerStateChange+0x21 (FPO: [Non-Fpo])
f8d7f524 80639f59 f8d7f5b8 f8d7f57c 00000001
ntoskrnl!PopHandleNextState+0xbb (FPO: [Non-Fpo])
f8d7f53c 8063a135 f8d7f5dc f8d7f57c 00000005 ntoskrnl!PopIssueNextState+0x33
(FPO: [Non-Fpo])
f8d7f5f8 8063a3c8 00000003 ff9ca9f8 f8d7f6e0
ntoskrnl!PopInvokeSystemStateHandler+0x1cb (FPO: [2,39,3])
f8d7f608 80638cb0 00000005 ff9ca9f8 f8d7f6f4 ntoskrnl!PopSleepSystem+0x3b
(FPO: [Non-Fpo])
f8d7f6e0 804d4e91 00000002 00000005 20000003
ntoskrnl!NtSetSystemPowerState+0x564
f8d7f6e0 8050c14b 00000002 00000005 20000003 ntoskrnl!KiSystemService+0xc4
(FPO: [0,0] TrapFrame @ f8d7f6f4)
f8d7f764 806387a2 00000002 00000005 20000003
ntoskrnl!ZwSetSystemPowerState+0x11 (FPO: [3,0,0])
f8d7f840 804d4e91 00000002 00000005 20000003
ntoskrnl!NtSetSystemPowerState+0x57 (FPO: [Non-Fpo])
f8d7f840 7ffe0304 00000002 00000005 20000003 ntoskrnl!KiSystemService+0xc4
(FPO: [0,0] TrapFrame @ f8d7f854)
0006f3c8 77f7f2cf 0101efc4 00000002 00000005
SharedUserData!SystemCallStub+0x4 (FPO: [0,0,0])
WARNING: Stack unwind information not available. Following frames may be
wrong.
0006f4e0 01020490 00079868 00010024 0006fd1c ntdll+0x2f2cf

Thanks In Advance,
Joe


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

I think that if your driver is the boot disk driver then your driver
ought to also be the hiber_diskdump.sys driver. I don’t know if this is
especially documented anywhere, but if your driverentry is called with a
NULL DriverObject, AND you think you are a dump device, THEN your
driverentry routine is being invoked in the context of a dump or
hibernate operation.

Bugcheck D1 is: DRIVER_IRQL_NOT_LESS_OR_EQUAL, and I think your driver
entry routine is walking off the end of a NULL pointer with the usual
results.

Of course I could be completely wrong too, but I’m sure somebody will
step up to correct me if I am.

You also have to support IOCTL_SCSI_GET_DUMP_POINTERS.

=====================
Mark Roddy
Windows XP/2000/NT Consulting
Hollis Technology Solutions 603-321-1032
www.hollistech.com
xxxxx@hollistech.com
For Windows Device Driver Training: see www.azius.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Joe Moriarty
Sent: Wednesday, January 30, 2002 2:32 PM
To: NT Developers Interest List
Subject: [ntdev] Can you hibernate a Win2k, WinXp system that doesn’t
use MS SCSIPORT driver.

I am trying to get hibernation to work on our system. I have run into a
BSOD that I cannot debug because I do not have MS source. We do not use
the MS SCSIPORT driver. I have a feeling the BSOD is related to the OS
trying to get sole access to the HAB directly instead of through the
Port driver. Here’s my BSOD dump. Is my assumption correct or wrong?

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

Use !analyzebugcheck -v to get more information.

BugCheck D1, {0, 2, 1, f3cdc08c}
Fault occurred in driver hiber_diskdump.sys (
hiber_diskdump!DriverEntry+0x20 )
f3cdc08c f3ab rep stosd
Followup : MachineOwner

ntoskrnl!RtlpBreakWithStatusInstruction:
8050d064 cc int 3
WARNING: Stack unwind information not available. Following frames may be
wrong.
kd> kv
ChildEBP RetAddr Args to Child
f8d7ef64 805226a5 00000003 00000000 000000d1
ntoskrnl!RtlpBreakWithStatusInstruction (FPO: [1,0,0]) f8d7efb0 80522dea
00000003 00000000 f3cdc08c ntoskrnl!KiBugCheckDebugBreak+0x19 (FPO:
[Non-Fpo]) f8d7f378 804fc1bb 000000d1 00000000 00000002
ntoskrnl!KeBugCheck2+0x43c
(FPO: [Non-Fpo])
f8d7f398 804d7c50 0000000a 00000000 00000002 ntoskrnl!KeBugCheckEx+0x19
(FPO: [Non-Fpo])
f8d7f398 f3cdc08c 0000000a 00000000 00000002 ntoskrnl!KiTrap0E+0x2ad
(FPO: [0,0] TrapFrame @ f8d7f3b4) f8d7f430 80520734 00000000 80e4ca18
89176a45 hiber_diskdump!DriverEntry+0x20
(FPO: [EBP 0xf8d7f474] [2,0,4])
f8d7f448 806385dd 80e4ca18 00000000 00000000
ntoskrnl!IoInitializeDumpStack+0x1e (FPO: [2,0,3]) f8d7f4e8 806bd99f
8069fed8 f8d7f57c f8d7f5b8 ntoskrnl!PopSaveHiberContext+0x13d (FPO:
[1,33,3]) f8d7f4fc 80639eb3 00000003 806384a0 ff9ca9f8
hal!HaliLegacyPowerStateChange+0x21 (FPO: [Non-Fpo]) f8d7f524 80639f59
f8d7f5b8 f8d7f57c 00000001 ntoskrnl!PopHandleNextState+0xbb (FPO:
[Non-Fpo]) f8d7f53c 8063a135 f8d7f5dc f8d7f57c 00000005
ntoskrnl!PopIssueNextState+0x33
(FPO: [Non-Fpo])
f8d7f5f8 8063a3c8 00000003 ff9ca9f8 f8d7f6e0
ntoskrnl!PopInvokeSystemStateHandler+0x1cb (FPO: [2,39,3]) f8d7f608
80638cb0 00000005 ff9ca9f8 f8d7f6f4 ntoskrnl!PopSleepSystem+0x3b
(FPO: [Non-Fpo])
f8d7f6e0 804d4e91 00000002 00000005 20000003
ntoskrnl!NtSetSystemPowerState+0x564
f8d7f6e0 8050c14b 00000002 00000005 20000003
ntoskrnl!KiSystemService+0xc4
(FPO: [0,0] TrapFrame @ f8d7f6f4)
f8d7f764 806387a2 00000002 00000005 20000003
ntoskrnl!ZwSetSystemPowerState+0x11 (FPO: [3,0,0]) f8d7f840 804d4e91
00000002 00000005 20000003 ntoskrnl!NtSetSystemPowerState+0x57 (FPO:
[Non-Fpo]) f8d7f840 7ffe0304 00000002 00000005 20000003
ntoskrnl!KiSystemService+0xc4
(FPO: [0,0] TrapFrame @ f8d7f854)
0006f3c8 77f7f2cf 0101efc4 00000002 00000005
SharedUserData!SystemCallStub+0x4 (FPO: [0,0,0])
WARNING: Stack unwind information not available. Following frames may be
wrong. 0006f4e0 01020490 00079868 00010024 0006fd1c ntdll+0x2f2cf

Thanks In Advance,
Joe


You are currently subscribed to ntdev as: xxxxx@hollistech.com To
unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Thanks for the reply Mark,

I have noticed in the debugger that the OS thinks there is a driver named
hiber_ and a driver named dump_.
Unfortunately, the driver’s have a different starting and end address when
viewing them with a ‘lm’ command under windbg. I set a breakpoint in my
DriverEntry routine but do not get called with my DriverEntry during a
hibernate sequence. Is it because I cannot debug the driver at this point?
Or is it because I do not have something connected correctly?

Also, this is pertaining to IOCTL_SCSI_GET_DUMP_POINTERS IOCTL. The
DUMP_POINTERS structure passed back for this IOCTL. I am using a virtual
SCSIPORT driver. I don’t have a physical HAB adapter in my system. So what
do I fill in for these values? Alot of these values pertain to physical
adapter hardware things like the variable MappedRegisterBase.

typedef struct _DUMP_POINTERS {
struct _ADAPTER_OBJECT *AdapterObject;
PVOID MappedRegisterBase;
PVOID DumpData;
PVOID CommonBufferVa;
LARGE_INTEGER CommonBufferPa;
ULONG CommonBufferSize;
BOOLEAN AllocateCommonBuffers;
BOOLEAN UseDiskDump;
UCHAR Spare1[2];
PVOID DeviceObject;
} DUMP_POINTERS, *PDUMP_POINTERS;

Thanks,
Joe

> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com]On Behalf Of Mark Roddy
> Sent: Wednesday, January 30, 2002 7:28 PM
> To: NT Developers Interest List
> Subject: [ntdev] RE: Can you hibernate a Win2k, WinXp system that
> doesn’t use MS SCSIPORT driver.
>
>
> I think that if your driver is the boot disk driver then your driver
> ought to also be the hiber_diskdump.sys driver. I don’t know if this is
> especially documented anywhere, but if your driverentry is called with a
> NULL DriverObject, AND you think you are a dump device, THEN your
> driverentry routine is being invoked in the context of a dump or
> hibernate operation.
>
> Bugcheck D1 is: DRIVER_IRQL_NOT_LESS_OR_EQUAL, and I think your driver
> entry routine is walking off the end of a NULL pointer with the usual
> results.
>
> Of course I could be completely wrong too, but I’m sure somebody will
> step up to correct me if I am.
>
> You also have to support IOCTL_SCSI_GET_DUMP_POINTERS.
>
> =====================
> Mark Roddy
> Windows XP/2000/NT Consulting
> Hollis Technology Solutions 603-321-1032
> www.hollistech.com
> xxxxx@hollistech.com
> For Windows Device Driver Training: see www.azius.com
>
>
>
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Joe Moriarty
> Sent: Wednesday, January 30, 2002 2:32 PM
> To: NT Developers Interest List
> Subject: [ntdev] Can you hibernate a Win2k, WinXp system that doesn’t
> use MS SCSIPORT driver.
>
>
> I am trying to get hibernation to work on our system. I have run into a
> BSOD that I cannot debug because I do not have MS source. We do not use
> the MS SCSIPORT driver. I have a feeling the BSOD is related to the OS
> trying to get sole access to the HAB directly instead of through the
> Port driver. Here’s my BSOD dump. Is my assumption correct or wrong?
>
> ****
>

>
>
>
> * Bugcheck Analysis
>
>
>
>

> *
>

>
> Use !analyzebugcheck -v to get more information.
>
> BugCheck D1, {0, 2, 1, f3cdc08c}
> Fault occurred in driver hiber_diskdump.sys (
> hiber_diskdump!DriverEntry+0x20 )
> f3cdc08c f3ab rep stosd
> Followup : MachineOwner
>
> ntoskrnl!RtlpBreakWithStatusInstruction:
> 8050d064 cc int 3
> WARNING: Stack unwind information not available. Following frames may be
> wrong.
> kd> kv
> ChildEBP RetAddr Args to Child
> f8d7ef64 805226a5 00000003 00000000 000000d1
> ntoskrnl!RtlpBreakWithStatusInstruction (FPO: [1,0,0]) f8d7efb0 80522dea
> 00000003 00000000 f3cdc08c ntoskrnl!KiBugCheckDebugBreak+0x19 (FPO:
> [Non-Fpo]) f8d7f378 804fc1bb 000000d1 00000000 00000002
> ntoskrnl!KeBugCheck2+0x43c
> (FPO: [Non-Fpo])
> f8d7f398 804d7c50 0000000a 00000000 00000002 ntoskrnl!KeBugCheckEx+0x19
> (FPO: [Non-Fpo])
> f8d7f398 f3cdc08c 0000000a 00000000 00000002 ntoskrnl!KiTrap0E+0x2ad
> (FPO: [0,0] TrapFrame @ f8d7f3b4) f8d7f430 80520734 00000000 80e4ca18
> 89176a45 hiber_diskdump!DriverEntry+0x20
> (FPO: [EBP 0xf8d7f474] [2,0,4])
> f8d7f448 806385dd 80e4ca18 00000000 00000000
> ntoskrnl!IoInitializeDumpStack+0x1e (FPO: [2,0,3]) f8d7f4e8 806bd99f
> 8069fed8 f8d7f57c f8d7f5b8 ntoskrnl!PopSaveHiberContext+0x13d (FPO:
> [1,33,3]) f8d7f4fc 80639eb3 00000003 806384a0 ff9ca9f8
> hal!HaliLegacyPowerStateChange+0x21 (FPO: [Non-Fpo]) f8d7f524 80639f59
> f8d7f5b8 f8d7f57c 00000001 ntoskrnl!PopHandleNextState+0xbb (FPO:
> [Non-Fpo]) f8d7f53c 8063a135 f8d7f5dc f8d7f57c 00000005
> ntoskrnl!PopIssueNextState+0x33
> (FPO: [Non-Fpo])
> f8d7f5f8 8063a3c8 00000003 ff9ca9f8 f8d7f6e0
> ntoskrnl!PopInvokeSystemStateHandler+0x1cb (FPO: [2,39,3]) f8d7f608
> 80638cb0 00000005 ff9ca9f8 f8d7f6f4 ntoskrnl!PopSleepSystem+0x3b
> (FPO: [Non-Fpo])
> f8d7f6e0 804d4e91 00000002 00000005 20000003
> ntoskrnl!NtSetSystemPowerState+0x564
> f8d7f6e0 8050c14b 00000002 00000005 20000003
> ntoskrnl!KiSystemService+0xc4
> (FPO: [0,0] TrapFrame @ f8d7f6f4)
> f8d7f764 806387a2 00000002 00000005 20000003
> ntoskrnl!ZwSetSystemPowerState+0x11 (FPO: [3,0,0]) f8d7f840 804d4e91
> 00000002 00000005 20000003 ntoskrnl!NtSetSystemPowerState+0x57 (FPO:
> [Non-Fpo]) f8d7f840 7ffe0304 00000002 00000005 20000003
> ntoskrnl!KiSystemService+0xc4
> (FPO: [0,0] TrapFrame @ f8d7f854)
> 0006f3c8 77f7f2cf 0101efc4 00000002 00000005
> SharedUserData!SystemCallStub+0x4 (FPO: [0,0,0])
> WARNING: Stack unwind information not available. Following frames may be
> wrong. 0006f4e0 01020490 00079868 00010024 0006fd1c ntdll+0x2f2cf
>
> Thanks In Advance,
> Joe
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@hollistech.com To
> unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@east.sun.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com