From: eplmst AT lu DOT erisoft DOT se (Martin Stromberg) Newsgroups: comp.os.msdos.djgpp Subject: Re: Accessing SMBIOS memory above 1 MB Date: 17 Dec 2002 08:57:45 GMT Organization: Ericsson Erisoft AB, Sweden Lines: 46 Message-ID: References: NNTP-Posting-Host: lws256.lu.erisoft.se X-Newsreader: TIN [version 1.2 PL2] To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Nigel Harwood (nharwood AT bigpond DOT com) wrote: : I wrote a program to return useful information from a systems SMBIOS under : Windows NT and this works for computers that have this memory mapped below : 1MB but silently fails on the first _farpeekb() when this memory is mapped : above 1 MB. : I am running the program under Windows NT 4.0. : As far I know I am doing these accesses correctly as have always worked fine : for other computer models. I've re-read the FAQ and can't see anything else : to consider. I've scanned the web but found nothing relevant. I've : searched the mailing list archive and found one similar question but no : answer. : I'm hoping that this mailing list will provide the answer. : The approach I am using is: : unsigned char c; : unsigned short smbios_selector; : __dpmi_meminfo meminfo; : meminfo.size = smbios_entry_point.structure_table_length; : meminfo.address = smbios_entry_point.structure_table_address; // address : is 0xFEEF800 : __dpmi_physical_address_mapping(&meminfo); : smbios_selector = __dpmi_allocate_ldt_descriptors(1); : __dpmi_set_segment_base_address(smbios_selector,meminfo.address); : __dpmi_set_segment_limit(smbios_selector,meminfo.size-1); : c = _farpeekb(smbios_selector,0); // first byte of SMBIOS memory : Using debug statements I can confirm that the program fails at the : _farpeekb(). Absolutely no error message appears it just comes back to the : command prompt. Does it work if you run plain DOZE? (You can get a DOS from if you don't have it.) If so then it sounds like NT is blocking access to memory that high. Right, MartinS