delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/1997/11/23/08:07:54

Date: Sun, 23 Nov 1997 15:00:35 +0200 (IST)
From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
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: <Pine.SUN.3.91.971123150013.19570B-100000@is>
MIME-Version: 1.0

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.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019