How does Windows Reboot a system?

G

Guest

I'm working on a prototype board that Windows is unable to restart. It hangs
at the "windows is shutting down" screen. FBA is also unable to restart the
machine.

What method does Windows use to execute the restart? jump to the restart
vector, command to the keyboard controller, INT 19?????

The prototype I'm working on does not have a keyboard controller as it is
designed to be a headless system.

We also have a demo board running the same bios and XPe image. This unit
does have a keyboard controller and ps2 keyboard/mouse. FBA and XP can
restart this board with no problems.

Any clues would be really helpful :)
 
K

KM

Quick question - how does the board work under XP Pro or WinPE ?
Are you able to shut it down properly there?

There are many things going on when you do a shutdown (restart) on Windows. Finally, it ends up Winlogon (or Minlogon) making a call
to NtShutdownSystem API that does the job.
So, an easy test you can perform to get more information about the issue - call the API directly from your app and see if shuts down
the OS.

A little bit more info here: http://groups.google.com/groups?hl=en&lr=&c2coff=1&[email protected]

I don't know how the NtShutdownSystem is implemented internally (kernel stuff) :-( My only guess would be that it ends up calling
HAL which implementation depends on the processor type.
On i386 it may not leverage BIOS interrupts to do the reboot or shutdown. It probably programs some CMOS ports to reset controllers
and prepare it for the action and/or call to bus power interfaces.
Maybe someone with a real knowledge of the kernel or HAL can help you here.

To power off the machine you have to have a support in your board/BIOS for either APM or ACPI (also see AMD's PowerNow
specification).
 
G

Guest

XP Pro behaved in exactly the same way. With XPe SP1 I was able to resolve
the issue by turning the powermanagent option "off" on the "USB Root Hub"
device in device manager.

Unfortunately this work around doesn't work under XPe SP2.
 
G

Guest

FYI,

For the curious:

Legacy computers have a keyboard controller that lives on port 0x64. With a
standard HAL windows XP attempts to write a magic restart command to the
controller 0x1e (if I remember correctly). The controller then signals the
reset line on the motherboard and the system restarts.

Legacy free computers that don't have a keyboard controller have two
options.
1). Emulate the keyboard controller (some how) in the bios or custom
hardware.
2). Implement ACPI bios.

On our travels with NTe and XPe we've discovered that creating hardware
without the keyboard controller just causes problems. Even NTDETECT.COM by
passes the bios and attempts to read characters from port 0x64. Hard if its
not there ;)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top