ISAPI 4.0

IIS 4.0 introduced the following significant changes to the ways you can develop and implement Internet applications. These changes can affect how you develop ISAPI extensions.

Specifying filters in the Metabase

IIS 4.0 introduced the metabase, a new data storage location. ISAPI filter information that you formerly stored in the system registry should now be stored in the metabase. Metabase information can be modified either through the IIS Admin Objects, or the IIS Admin Base Object. For more information, see Administering IIS Programmatically.

Global and Website filters

In earlier versions, you applied ISAPI filters across all levels of a server. There was no way to specify that a filter would respond only to events at a more granular level. In IIS version 4.0 and later, you can apply filters to all Web sites on a server or to a particular Web site only. A global filter will be notified of events that occur at any Web site on the server, whereas Web site filters are only notified of events at the site to which they are applied. You can specify both global and Web site filters with the user interface, or you can set the appropriate key values in the metabase. For more information on setting a filter, see IIS Filter and IIS Filters in IIS Admin Objects.

Support for TerminateFilter

TerminateFilter is an entry point for ISAPI filters introduced in IIS 4.0. If your ISAPI filter exports TerminateFilter, it will be called when the filter is unloaded. This is useful for performing proper cleanup.

New filter notification

SF_NOTIFY_SEND_RESPONSE is a new notification that can be specified with the HttpFilterProc function.

New Server Variables

Many new server variables that can be specified by the GetServerVariable function have been added.

New ServerSupportFunction() commands for filters

Two new function requests for ServerSupportFunction have been added. They are:

SF_REQ_DISABLE_NOTIFICATIONS

SF_REQ_GET_PROPERTY

New Members of the HTTP_FILTER_LOG structure

Three members of the HTTP_FILTER_LOG structure were added in IIS 4.0. They are:

Support for HTTP 1.1

IIS 4.0 introduced support for HTTP 1.1. Two areas where this has potential impact on ISAPI extension and filter developers is in support for pipelined requests and the transfer encoding header. Pipelined requests are described in Extension Request Processing.

Active Server Pages (ASP) now support the transfer encoding header, which tells the client if a transformation has been applied to the body of the message that is being sent. For example, if the client supports HTTP 1.1, IIS version 4.0 and later can specify the Transfer-Encoding value of "chunked." When the chunked transformation has been applied, the message is broken into a chunks of varying sizes. Each chunk contains its own size indicator and optional footers for specifying header fields. Chunking improves the overall efficiency of the transmission (although there is a small overhead for headers).

For more information on transfer encoding, see RFC 2068 published by the World Wide Web consortium. RFC 2068 is available at: http://www.w3.org/protocols. See Developer Samples for information on the sample extension that implements this technology.