<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Apache module mod_isapi</TITLE>
</HEAD>

<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
 BGCOLOR="#FFFFFF"
 TEXT="#000000"
 LINK="#0000FF"
 VLINK="#000080"
 ALINK="#FF0000"
>
<!--#include virtual="header.html" -->

<H1 ALIGN="CENTER">Module mod_isapi</h1>

<p>This module is contained in the <code>mod_isapi.c</code> file, and is
   compiled in by default. It provides support for ISAPI Extensions when
   running under Microsoft Windows. Any document with a handler of
   <code>isapi-isa</code> will be processed by this module.

<h2>Purpose</h2>

<p>This module implements the <a
   href="http://www.microsoft.com/win32dev/apiext/isapimrg.htm">ISAPI
   Extension</a> API. It allows Internet Server Applications (i.e., ISAPI
   Extensions) to be used with Apache for Windows.

<h2>Usage</h2>

<p>In the server configuration file, add a handler called
   <code>isapi-isa</code>, and map it to files with a <code>.DLL</code>
   extension. In other words:</p>
<pre>
    AddHandler isapi-isa dll
</pre>
<p>Now simply place the ISA DLLs into your document root, and they will
   be loaded when their URLs are accessed.</p>

<p>ISAPI Extensions are governed by the same restrictions as CGI
   scripts. That is, <code>Options ExecCGI</code> must be active in the
   directory that contains the ISA.</p>

<h2>Notes</h2>

<p>Apache's ISAPI implementation conforms to all of the ISAPI 2.0
   specification, except for the "Microsoft-specific" extensions dealing
   with ascynchronous I/O. Apache's I/O model does not allow asynchronous
   reading and writing in a manner that the ISAPI could access. If an ISA
   tries to access async I/O, a message will be place in the error log,
   to help with debugging.

<p>Some servers, like Microsoft IIS, load the ISA into the server, and
   keep it loaded until memory usage is too high, and it is
   unloaded. Apache currently loads and unloads the ISA for each
   request. This is inefficient, but Apache's request model makes this
   method the only method that currently works. A future release may use
   a more effective loading method.

<p>Apache 1.3a1 currently limits POST and PUT input to 48k per
   request. This is to work around a problem with the ISAPI implementation
   that could result in a denial of service attack. It is expected that
   support for larger uploads will be added soon.

<p>Also, remember that while Apache supports ISAPI Extensions, it does
   not support ISAPI Filters. Support for filters may be added at a later
   date, but no support is planned at this time.</p>

<!--#include virtual="footer.html" -->
</BODY>
</HTML>
