EXTENSION_CONTROL_BLOCK-Struktur

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:

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

Index