\documentclass[a4paper, 11pt]{article}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{a4wide}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{color}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{ulem}
\usepackage{listings}
\usepackage{float}
\usepackage[rflt]{floatflt}
\usepackage{tabularx}
\setlength{\parindent}{0pt}
\title{ISAPI-Interface}
\usepackage[
pdftitle={ISAPI-Interface}
pdfsubject={Free Pascal Internet Server Application Programming Interface v 7.0}
pdfauthor={Udo Schmal}
pdfkeywords={Free Pascal, ISAPI}
]{hyperref}
\definecolor{darkblue}{rgb}{0,0,.5}
\hypersetup{pdftex=true, colorlinks=true, breaklinks=true, linkcolor=darkblue, menucolor=darkblue, pagecolor=darkblue, urlcolor=darkblue}
\begin{document}ISAPI-Interface
\singlespacing
{\LARGE \textbf{\label{sec:title}ISAPI-Interface}}

\singlespacing
{\large \textbf{Das Interface}}

Beim erstellen der Interface-Datei habe ich mich bewusst auf die sehr ausgereifte ISAPI - Schnittstelle des IIS konzentriert, denn man kann schon sagen das der IIS den größten Funktionsumfang zur Verfügung stellt in vielen anderen Implementierungen wie z.B. beim Apache wurde auf einige Möglichkeiten verzichtet denn hier steht auch eine andere Schnittstelle zu Verfügung.

Wie schon erwähnt konnte ich es mir zu Nutze machen das bereits in C Header-Dateien zu diesem Interface zur Verfügung stehen die nur nach Pascal portiert werden mussten. Im Internet findet man dazu einiges (wenn man nach isapi.pas sucht) aber leider sind die Ergebnisse nicht aktuell und auch leider nicht immer Fehlerfrei und auch leider nicht direkt für Free Pascal zu gebrauchen.

Die aus den Recherchen im Internet entstandene Interface-Datei ist gleichermaßen für Lazarus / Free Pascal als auch für Delphi geeignet. Sie stellt die Definitionen der drei zu jeder Schnittstelle zu exportierten Funktionen zur Verfügung.

\singlespacing
{\large \textbf{Bei dem Filter wären das:}}

\begin{enumerate}
\item GetFilterVersion, welche Informationen zum Filter übergibt, vor allem für welche Events das Filter geschrieben wurde.
\item HttpFilterProc, die Hauptfunktion welche eigentliche Verarbeitung vornimmt.
\item TerminateFilter, die das Beenden des Filters einleitet.
\end{enumerate}

\singlespacing
{\large \textbf{Bei der Extension wären das:}}

\begin{enumerate}
\item GetExtensionVersion, welche Informationen zur Extension übergibt.
\item HttpExtensionProc, die Hauptfunktion welche eigentliche Verarbeitung des Requests vornimmt.
\item TerminateExtension, die das Beenden der Extension einleitet.
\end{enumerate}

\href{http://www.gocher.me/code/isapi.pas}{isapi.pas}
\end{document}