Date: Mon, 13 Dec 1999 10:37:49 +0200 (IST) From: Eli Zaretskii X-Sender: eliz AT is To: Pierre Muller cc: Peter Johnson , djgpp AT delorie DOT com Subject: Re: NT4 DPMI BUG (303h, Allocate Real-Mode Callback) In-Reply-To: <3.0.6.32.19991212231044.00928100@ics.u-strasbg.fr> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Reply-To: djgpp AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk On Sun, 12 Dec 1999 muller AT cerbere DOT u-strasbg DOT fr wrote: > I mean that I only reserved room for one such structure inside > the loader file (equivalent of crt0.S) > so all calls to 0x303 DPMI function must use the same > register struct ! > (But Ralph Brown interrupt list anyhow states > that the content of this struct should only be > examined inside the protected mode code itself !) > > So if you specify another struct defined elsewhere > it will probably have an address > 0x10000 and thus WinNT > will write data at a wrong address ( true addr & 0xffff !!) > => crash ! Sorry, I'm still confused. AFAIK, Peter's solution doesn't call for another struct, it just passes to NT a different selector and offset for the same linear address of the same struct. The segment whose selector is passed is arranged in such a way that the offset has its high 16 bits cleared.