EXTENSION_CONTROL_BLOCK -Struktur hat folgende form:
typedef struct _EXTENSION_CONTROL_BLOCK {
DWORD cbSize; //IN
DWORD dwVersion //IN
HCONN ConnID; //IN
DWORD dwHttpStatusCode; //OUT
CHAR lpszLogData[HSE_LOG_BUFFER_LEN]; //OUT
LPSTR lpszMethod; //IN
LPSTR lpszQueryString; //IN
LPSTR lpszPathInfo; //IN
LPSTR lpszPathTranslated; //IN
DWORD cbTotalBytes; //IN
DWORD cbAvailable; //IN
LPBYTE lpbData; //IN
LPSTR lpszContentType; //IN
BOOL ( WINAPI * GetServerVariable )
( HCONN hConn,
LPSTR lpszVariableName,
LPVOID lpvBuffer,
LPDWORD lpdwSize );
BOOL ( WINAPI * WriteClient )
( HCONN ConnID,
LPVOID Buffer,
LPDWORD lpdwBytes,
DWORD dwReserved );
BOOL ( WINAPI * ReadClient )
( HCONN ConnID,
LPVOID lpvBuffer,
LPDWORD lpdwSize );
BOOL ( WINAPI * ServerSupportFunction )
( HCONN hConn,
DWORD dwHSERRequest,
LPVOID lpvBuffer,
LPDWORD lpdwSize,
LPDWORD lpdwDataType );
} EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;
Der Server kommuniziert mit der ISA über die EXTENSION_CONTROL_BLOCK.
Die Verweise auf ein-und oben gibt an, ob das Mitglied gilt für Nachrichten an die Erweiterung (IN) oder von der Erweiterung (raus).
Mitglieder
EXTENSION_CONTROL_BLOCK -Struktur enthält die folgenden Felder:
cbSize
Die Größe der Struktur.
dwVersion
Die Version Informationen Ofnbsp; HTTP_FILTER_REVISIO&N. Die HIWORD hat die Hauptversionsnummer und die LOWORD die Nebenversionsnummer.
ConnID
&Nbsp;Eine eindeutige Zahl, die durch den HTTP-Server zugewiesen. Es muss nicht geändert werden.
dwHttpStatusCode
Der Status der aktuellen Transaktion, wenn die Anforderung abgeschlossen ist. Eine der folgenden kann sein:
lpszLogData
Puffer der Größe HSE_LOG_BUFFER_LEN. Enthält einen Null-terminierte Protokoll Informationen String, spezifisch für den ISA, von der aktuellen Transaktion. Diese Informationen werden in der HTTP-Server-Protokoll eingetragen. Eine einzelne Protokolldatei mit HTTP-Server und ISA Transaktionen pflegen ist sehr nützlich für die Verwaltung.
lpszMethod
Die Methode, mit der der Antrag gestellt wurde. Dies ist gleichbedeutend mit der CGI-Variable REQUEST_METHOD.
lpszQueryString
&Nbsp;NULL endende Zeichenfolge, die die Abfrageinformationen enthält. Dies ist gleichbedeutend mit der CGI-Variablen QUERY_STRING.
lpszPathInfo
NULL endende Zeichenfolge, die zusätzliche Pfadinformationen gegeben durch den Kunden enthalten. Dies ist gleichbedeutend mit der CGI-Variable PATH_INFO.
lpszPathTranslated
NULL endende Zeichenfolge mit dem übersetzten Pfad. Dies ist gleichbedeutend mit der CGI-Variablen PATH_TRANSLATED.
cbTotalBytes
Die Gesamtzahl der Bytes, die vom Client empfangen werden. Dies entspricht der CGI-Variablen CO&NTENT_LENGTH. Wenn dieser Wert 0xffffffff ist, dann es gibt mindestens vier Gigabytes zur Verfügung data.nbsp; In diesem Fall sollte CHttpServerContext::ReadClient aufgerufen werden, bis keine Daten mehr zurückgegeben wird.
cbAvailable
Die verfügbare Anzahl von Bytes im Puffer befinden (von insgesamt CbTotalBytes) auf LpbDataverweist. Wenn CbTotalBytes das gleiche wie CbAvailable die Variable ist wird LpbData auf einen Puffer zeigen, alle vom Client gesendeten Daten enthält. Andernfalls wird CbTotalBytes die Gesamtanzahl der Bytes der Daten enthalten. Dann müssen die ISA die Callback-Funktion CHttpServerContext::ReadClient verwenden, um lesen den Rest der Daten (ab ein Offset von CbAvailable).
lpbData
Zeigt auf einen Puffer der Größe CbAvailable mit die Daten vom Client gesendeten.
lpszContentType
NULL endende Zeichenfolge mit den Inhaltstyp der vom Client gesendeten Daten. Dies ist gleichbedeutend mit der CGI-Variablen CONTENT_TYPE.
GetServerVariable
Diese Funktion kopiert die Informationen (einschließlich der CGI-Variablen) über eine HTTP-Verbindung, oder auf den Server selbst, in einen Puffer. GetServerVariable verwendet die folgenden Parameter:
Variablenname | Beschreibung |
ALL_HTTP | Alle HTTP-Header, die nicht bereits in einer der oben genannten Variablen analysiert wurden. Diese Variablen sind von der Form HTTP_lt; Header-Feldnamen & gt. |
AUTH_PASS | Dies wird das Kennwort, REMOTE_USER entspricht, die vom Client abrufen. Es wird eine Null-terminierte Zeichenfolge sein. |
AUTH_TYPE | Enthält den Typ der Authentifizierung used.nbsp; Zum Beispiel, wenn Standardauthentifizierung verwendet wird, wird die Zeichenfolge "Basic" sein. Für Windows &NT Challenge-Response werden "NTLM". Anderen Authentifizierungsschemas werden andere Zeichenfolgen haben. Da neue Authentifizierungstypen Internet Server hinzugefügt werden können, ist es nicht möglich, alle mögliche Zeichenfolgen auflisten. Wenn die Zeichenfolge leer ist, wird keine Authentifizierung verwendet. |
CONTENT_LENGTH | Die Anzahl der Bytes, die das Skript vom Client empfangen erwarten können. |
CONTENT_TYPE | Der Inhaltstyp der Angaben im Körper von einer POST-Anforderung. |
GATEWAY_INTERFACE | Die Revision der CGI-Spezifikation, die dieser Server erfüllt. Die aktuelle Version ist CGI/1.1. |
HTTP_ACCEPT | Sonderfall HTTP-Header. Werte von der Accept: Felder verkettet werden, getrennt durch ",". Zum Beispiel, wenn die folgenden Zeilen sind Teil des HTTP-Headers
dann wird die Variable HTTP_ACCEPT Wert haben:
|
PATH_INFO | Zusätzliche Pfadinformationen, wie durch den Kunden gegeben. Dies umfasst den nachgestellten Teil der URL nach dem Skriptnamen, aber vor der Abfragezeichenfolge (sofern vorhanden). |
PATH_TRANSLATED | Dies ist der Wert von PATH_INFO, aber mit einem virtuellen Pfad-Namen in eine Verzeichnisangabe erweitert. |
QUERY_STRING | Die Informationen, die die ? in der URL folgt, auf die dieses Skript verwiesen. |
REMOTE_ADDR | Die IP-Adresse des Clients. |
REMOTE_HOST | Der Hostname des Clients. |
REMOTE_USER | Diese enthält den Benutzernamen, den vom Client und vom Server authentifiziert. |
REQUEST_METHOD | Die HTTP-Request-Methode. |
SCRIPT_NAME | Der Name des Programms Skript ausgeführt wird. |
SERVER_NAME | Der Servers-Hostname (oder IP-Adresse) als es sollte in Verweises auf sich selbst URLs angezeigt werden. |
SERVER_PORT | Der TCP/IP Port, auf dem die Anforderung empfangen wurde. |
SERVER_PROTOCOL | Der Name und die Version des Information-Retrieval-Protokolls für diese Anforderung. Normalerweise HTTP/1.0. |
SERVER_SOFTWARE | Name und Version des Web-Servers unter dem das CGI-Programm ausgeführt wird. |
WriteClient
Sendet Informationen an den Client aus dem angegebenen Puffer. WriteClient verwendet die folgenden Parameter:
ReadClient
Informationen liest aus dem Körper der Web-Client-HTTP-Anforderung in den vom Aufrufer bereitgestellten Puffer. ReadClient verwendet die folgenden Parameter:
ServerSupportFunction
Die ISA bieten einige allgemeine Funktionen sowie Funktionen, die für HTTP-Server-Implementierung spezifisch sind. ServerSupportFunction verwendet die folgenden Parameter:
Kommentare
Ei&n Server identifiziert Dateien, die mit der Extensionsnbsp;.EXE und.BAT als CGI (Common Gateway Interface) ausführbare Dateien. Zusätzlich wird ein Server eine Datei mit der Erweiterung DLL als ein Skript zum Ausführen identifizieren.
Wenn der Server die DLL geladen wird, ruft es die DLL an den Einstiegspunkt CHttpServer::GetExtensionVersion um die Versionsnummer der Thenbsp zu erhalten; HTTP_FILTER_REVISIO&N , die die ISA auf basiert und eine kurze Textbeschreibung für Server-Administratoren. Für jede Clientanforderung wird der CHttpServer::HttpExtensionProc -Einstiegspunkt aufgerufen. Die Erweiterung erhält die häufig benötigte Informationen wie den Query-String, Pfad Info, Methodennamen und den übersetzten Pfad.
Siehe auch&Nbsp;CHttpServerContext::ReadClient, CHttpServer::GetExtensionVersion, CHttpServer::HttpExtensionProc