All Things Microsoft > Microsoft Software
MS-DOS/9x Kernel Inaccuracy.
anphanax:
Microsoft Windows has been able to utilize protected mode since a special version was released, called today as "Windows 286" (at least what i've seen) and was based off of Windows 2.0.
If you think i'm wrong, try writing a windows application using DOS interrupts (21h, in particular) and see how far you get... WINDOWS 95 AND ABOVE ARE NOT MS-DOS. The interfaces designed for programming applications for these operating systems are not the same, therefore the Kernels aren't. 9x may have invoked MS-DOS for whatever reason, but it's most likely that the 9x kernel was more than just a wrapper for MS-DOS.
Proof of a different interface:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/win9x/lfn_0het.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/win9x/fat32ovr_0085.asp
These functions do not match MS-DOS functions (link below).
http://www.clipx.net/ng/interrupts_and_ports/ng51318.php
Documented kernel console functions.
(This is here so people will quit thinking Windows Console applications and MS-DOS applications are the same thing. MS-DOS applications don't invoke Windows API [you know what I mean here...].)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getconsolewindow.asp
EDIT:
I made this post because I saw a lot of people claiming they were the same kernel. There could be a strong relationship between MS-DOS and Windows 9x that i'm unaware of, but even so, the API is different, MS Windows multi-tasks, and does.. other things.. that MS-DOS "can't".
[ July 27, 2004: Message edited by: anphanax ]
[ July 27, 2004: Message edited by: anphanax ]
[ July 29, 2004: Message edited by: anphanax ]
Aloone_Jonez:
Windows 95 to ME (WinDOS) does use a DOS boot loader I don't know about the kernel though. I know Windows does call DOS the DOS 21h API and this is part of the kernel, it uses DOS kernel.
Despite the fact that MS will do it's best to convince you otherwise. When you call a Windows file IO function all the data is buffered back to DOS and the CPU is switched real mode, Int 21h is called and DOS does it's business, the CPU is then switched back to protected mode and the data is buffered back to your program. This is all very sneaky I must admit.
Try saving or opening a file named CON PRN or NUL in a windows program running under WinDOS and watch it crash.
Some DOS extenders include Win32 API emulation as a part of the package:
HX DOS Extender
And even better: WDOSX
Thus enabling you to run a Win32 console app under plain old DOS. Win32 has a built in DPMI that calls the DOS int 21h API.
The old virus checker I used under Win95 (forgotten the name) had both Windows and DOS parts, but it would still work even if you uninstalled the Windows part. The screen would go red and warn me a file I using in Windows was infected. The Windows part wouldn't work with out the DOS part, if you removed it from config.sys file when Windows booted it would say that it wasn't in memory.
DOS was in the heart of Win95 to WinME.
As far as I'm aware WinDOS doesn
hm_murdock:
dude, he just posted facts to support his claim, and you just say "nope, it had DOS so it had a DOS kernel"
bullshit
A Corvette with a Mopar starter is not a Dodge.
Did you know that you can make Linux boot from the DOS command line? it was a common practice about a decade ago, back when HDs were still small, for a lot of people to install distros like Slackware on a DOS partition and then start it with a DOS command. You can do the same with BeOS, or, really, any OS. Once you get its kernel in memory, it takes over. This is what Windows 9x did. DOS booted the machine, then loaded the Windows kernel. The difference is that 9x simply did not unload the DOS kernel from memory if memory serves.
If you start Linux or Be from DOS, does that mean that they're "using a DOS kernel"? No.
Stop going around flaming people because they're right.
edit: Thank you Anphanax, BTW.
[ July 27, 2004: Message edited by: JimmyJames: GenSTEP Founder ]
Aloone_Jonez:
quote:Originally posted by JimmyJames: GenSTEP Founder:
dude, he just posted facts to support his claim
--- End quote ---
As have I!
You have obviously not bothered to read them.
quote:Originally posted by JimmyJames: GenSTEP Founder:
and you just say "nope, it had DOS so it had a DOS kernel"
--- End quote ---
That would explain the reason for the "strange behaviour" of my old Virus scanner!
And the fact you can get DOS extenders that can run Win32 console programs under plain DOS without Windows!
WDOSX is truly magic you put in a program compiled for Win32 colsole and it spits out a DOS program!
quote:Originally posted by JimmyJames: GenSTEP Founder:
xxxxxxxx
A Corvette with a Mopar starter is not a Dodge.
Did you know that you can make Linux boot from the DOS command line? it was a common practice about a decade ago, back when HDs were still small, for a lot of people to install distros like Slackware on a DOS partition and then start it with a DOS command. You can do the same with BeOS, or, really, any OS. Once you get its kernel in memory, it takes over. This is what Windows 9x did. DOS booted the machine, then loaded the Windows kernel. The difference is that 9x simply did not unload the DOS kernel from memory if memory serves.
If you start Linux or Be from DOS, does that mean that they're "using a DOS kernel"? No.
--- End quote ---
I can see your point, you can boot Windows from Linux but it doesn't mean you're using a Linux kernel even if you did still leave it in memory.
quote:Originally posted by JimmyJames: GenSTEP Founder:
Stop going around flaming people
--- End quote ---
I wasn't "flaming" anyone, you're the one who started "flaming"
quote:Originally posted by JimmyJames: GenSTEP Founder:
because they're right.
edit: Thank you Anphanax, BTW.
--- End quote ---
Whatever.
Oh and by the way...
Jimmy, I always read your posts, in future if you have not read a post properly, then just don't reply to it.
[ July 27, 2004: Message edited by: Aloone ]
Aloone_Jonez:
No one can prove this either way with out looking at the Windows source code.
Windows might just use DOS as a boot loader.
Windows might still secretly call DOS interrupts.
The CON\CON exploit might be evidence of Windows calling DOS, or it could be just an example of very bad error handling or even both.
Windows definitely does leave DOS in memory because if you installed DOS drivers in the config.sys and autoexec.bat they were still available in a dos box.
I beleve that Win95B and below did call int 21h. I don't know about 98+ though.
We might be able to prove this by hooking int 21h before Windows boots, but for all we know Windows could just restore it, and even if Windows does, it dosn't mean that it uses it.
[ July 27, 2004: Message edited by: Aloone ]
Navigation
[0] Message Index
[#] Next page
Go to full version