ISAPI-Interface

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.

Bei dem Filter wären das:

  1. GetFilterVersion, welche Informationen zum Filter übergibt, vor allem für welche Events das Filter geschrieben wurde.
  2. HttpFilterProc, die Hauptfunktion welche eigentliche Verarbeitung vornimmt.
  3. TerminateFilter, die das Beenden des Filters einleitet.

Bei der Extension wären das:

  1. GetExtensionVersion, welche Informationen zur Extension übergibt.
  2. HttpExtensionProc, die Hauptfunktion welche eigentliche Verarbeitung des Requests vornimmt.
  3. TerminateExtension, die das Beenden der Extension einleitet.

isapi.pas