ISAPI Extensions Overview

Introduction to Extensions

ISAPI extensions are implemented as DLLs that are, like most DLLs, loaded either into the IIS process or—if part of an out-of-process application—into a separate process. Like ASP and HTML pages, IIS uses the virtual location of the .dll file in the file system to map the ISAPI extension into the URL namespace served by IIS.

When IIS receives a request that maps to an ISAPI extension, such as

  GET http://www.mysite.com/MyISAPI.dll
 

it first checks to see if the MyISAPI.dll is already loaded. By default, IIS is configured to cache ISAPI extensions. If it is determined that the extension is not yet loaded, IIS loads the DLL.

Once the extension DLL is loaded, the entire request is managed by the extension, with IIS simply acting as an efficient intermediary and helper.

The following diagram illustrates this process.

ISAPI Process Isolation

In addition, you can have an ISAPI control an entire namespace. If you use ‘*’ as your extension, then all requests to that namespace will be handled by the ISAPI specified.

The section also contains:

For more detailed reference information, see the ISAPI Extension Reference.