Message-ID: <5BF60CD649EDD411A04600B0D049F53A544225@hydmail02.hyd.wilco-int.com> From: Prashant Ramachandra To: "'Thomas Schachtner'" , Eli Zaretskii Cc: "'djgpp AT delorie DOT com'" Subject: RE: read a specific memory address Date: Thu, 10 May 2001 09:03:58 +0530 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2650.21) Content-Type: text/plain Reply-To: djgpp AT delorie DOT com On Thursday, May 10, 2001 1:01 AM, Thomas Schachtner [SMTP:thomas DOT schachtner AT gmx DOT de] wrote: | > What are the values of dmi.start and dmi.length printed by this | > snippet from your program: | > | > > mi.address = dmi.start; | > > mi.size = dmi.length; | > > | > > printf ("mi.address = %08X\n", dmi.start); | > > printf ("mi.size = %08X\n", dmi.length); | > > | > > if (__dpmi_physical_address_mapping (&mi) == -1) | | Sorry, I am already at home and do not know the values by heart, | but | dmi.start is 0x0BFF0000 and dmi.length is something like 0x0220 or | 0x0520 | ... | | And: Why does this function fail with Windows 2000 and does NOT fail | with | Windows Me? I've written such a program before. I don't think it's a problem with just Win2000. I've seen it fail even on Win98, but works perfectly on DOS. The fact is that it's operating system dependent. Some of the lower memory is protected by the OS, and you can't call the DMI entry point. I've debugged some DMI routines in the BIOS. Some of the old ones actually need to swich to protected mode (PL0) which they cannot do if an OS like Win2k is installed. In fact, you shouldn't expect a program like this to run on anything but plain DOS. Hope that helps! -- Prashant TR Web: http://www.midpec.com/ The greatest thing is not getting to the top, but remaining onself in the process.