# Module mod_isapi

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

## Purpose

This module implements the ISAPI Extension API. It allows Internet Server Applications (i.e., ISAPI Extensions) to be used with Apache for Windows.

## Usage

In the server configuration file, add a handler called `isapi-isa`, and map it to files with a `.DLL` extension. In other words:

        AddHandler isapi-isa dll

Now simply place the ISA DLLs into your document root, and they will be loaded when their URLs are accessed.

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

## Notes

Apache's ISAPI implementation conforms to all of the ISAPI 2.0 specification, except for the "Microsoft-specific" extensions dealing with asynchronous 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.

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.

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.

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.