Date: Sun, 23 Nov 1997 15:00:35 +0200 (IST) From: Eli Zaretskii To: andrewc AT rosemail DOT rose DOT hp DOT com cc: djgpp-workers AT delorie DOT com Subject: Re: LFN on NT In-Reply-To: <199711201816.AA167799817@typhoon.rose.hp.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk On Thu, 20 Nov 1997, Andrew Crabtree wrote: > It also has a way of hooking interrupts, but I'm > not sure if Int 21 gets up that far. I'd suggest to see whether Int 21h can be hooked by a DLL, before deciding on another approach (since Int 21h API doesn't require any changes in DJGPP's libc). > The second way is described > as Application Intercepts or BOPping. Here, the application just > 'calls' directly into the dll. OK, how about this: 1) At startup, the DJGPP app will issue a software interrupt that can be hooked by a DLL. 2) The DLL will reply by supplying the address of a callback (via the registers). This callback needs to be obtained by calling the DPMI service 03 in the DLL. 3) libc functions will call this address to access the LFN API. In the absence of the DLL (e.g. on Windows 95), the DJGPP startup will supply an address of its internal function that, when called, would just issue the LFN Int 21h call. > This way requires changes to the 16 bit app, so in many cases > is not an option (say providing sound support for old games under > NT). I hear rumors that a Win32 DLL cannot use DPMI calls. I'm not sure whether this is true and what effects will that have on the proposed solution above.