Weird issue with .INF file installing some files on the D:\ inste ad of the C:\ boot drive, seemingl

This is really weird. We are running on Windows NT 4.0 SP 6a. (I have not
tried this on other OSes, so I don’t know if the results will differ.)

Sometimes when we have a C: and a D: drive and both contain Windows NT
images, the SetupAPI installer gets a bit confused. It will copy some files
to the C: drive and some to the D: drive (but the relative paths are
correct). We would expect that the entire install would go to C:.

However, it is not a case where the system actually booted off of the D:
drive – the environment variables are what one would expect, such as
SystemDrive is C:, SystemRoot is C:\WINNT, and WinDir is also C:\WINNT. In
fact, there are no references to D: in any of the environment variables.

Most SetupAPI directory IDs refer to %windir% and whatnot, and those seem to
work correctly. It seems that the core problem is with directory ID 30,
which is defined as follows:
“Root directory of the boot drive, a.k.a. “ARC system partition” for
NT-based systems (This might or might not be the same directory as the one
represented by DIRID 24 (Applications directory).)”

So, it seems that the boot drive as far as the environment variables and so
on is concerned is C:, but the “ARC system partition” is D:.

Can anyone shed some light on what is going on here? For example, what is
an “ARC system partition” (a web search turned up nothing) and why would it
be different than the %SystemDrive%?

Thanks!

System drive (partition) and boot drive (partition) are two different
things. One refers to where the system image (the OS) lives, and the other
refers to the drive containing the boot loader. On most PC systems both are
C:, but of course this neededn’t be the case. The booter will almost
invariably be on C:, but the OS could be anywhere.

The ARC stuff and arc naming convention are I think left-overs from VMS or
the like, which has a certain relationship to the early history of NT.

So if you boot from C: and have the OS on D:, and use Setup to load
something relative to the boot path, it will go on C:.

Loren

OK, I can see what you’re saying, but I’m actually seeing the opposite case.

My C: is the only partition on my IDE master, and my D: is the only
partition on my IDE slave. It would seem that the boot loader would have to
come from my IDE master (C:), no? Since that’s a function of the BIOS, it
certainly seems that it should be doing that. And I guess that I know that
the OS is loading from C: since the %SystemRoot% is “C:\WINNT”.

Based on your comments, the problem certainly seems to be that the boot
loader came from D:, but how/why would that happen in a standard PC with IDE
drives?

More importantly, is there some API or Registry entry (although I did
searches for “D” and “D:” and found nothing interesting) or something like
that which I can check to see if the boot loader drive is D:? If so, I can
prevent upgrades when the boot loader drive does not match the system drive.
It seems there must be something like this since the SetupAPI is getting it
somehow.

It seems weird that the SetupAPI would have this oddity. Maybe DirID 30 is
not the one to use (even though that’s what I’ve seen in examples), but
maybe 24 or 54 might do the right thing for me… I’ll have to play around
with that.

“Loren Wilton” wrote in message news:xxxxx@ntdev…
> System drive (partition) and boot drive (partition) are two different
> things. One refers to where the system image (the OS) lives, and the
other
> refers to the drive containing the boot loader. On most PC systems both
are
> C:, but of course this neededn’t be the case. The booter will almost
> invariably be on C:, but the OS could be anywhere.
>
> The ARC stuff and arc naming convention are I think left-overs from VMS or
> the like, which has a certain relationship to the early history of NT.
>
> So if you boot from C: and have the OS on D:, and use Setup to load
> something relative to the boot path, it will go on C:.
>
> Loren

> Based on your comments, the problem certainly seems to be that the boot

loader came from D:, but how/why would that happen in a standard PC with
IDE
drives?

I’d check the BIOS settings. Most of my PCs have options to boot from IDE0,
IDE1, etc. I’ve never actually used them deliberately, but I assume that
they work on at least some BIOSes!

You can tell if a drive is a possible boot drive by looking for ntldr and
boot.ini. Both hidden files. Won’t tell you if it was used as *the* boot
drive, but at least tell you if it was possible.

Loren