Struktury EXTENSION_CONTROL_BLOCK

Struktura EXTENSION_CONTROL_BLOCK ma następującą postać:

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;

Serwer komunikuje się z serwerem ISA poprzez EXTENSION_CONTROL_BLOCK.

Odwołania i ODKŁADANIE powyżej wskazuje, czy element będzie stosowana do wiadomości do rozszerzenia (IN) lub z rozszerzenia (OUT).

Członkowie

Struktura EXTENSION_CONTROL_BLOCK zawiera następujące pola:

cbSize

Wielkość ta struktura.

dwVersion

Ofnbsp informacje o wersji; HTTP_FILTER_REVISIO&N. HIWORD ma główny numer wersji i LOWORD pomocniczy numer wersji.

ConnID

nbsp;Unikatowy numer przypisany przez serwer HTTP. &Nie należy modyfikować.

dwHttpStatusCode

Stan bieżącej transakcji po zakończeniu wniosek. Może mieć jedną z następujących czynności:

lpszLogData

Bufor o rozmiarze HSE_LOG_BUFFER_LEN. Zawiera ciąg informacje dziennika zakończony znakiem null, specyficzne dla programu ISA, bieżącej transakcji. Informacje dziennika zostanie wprowadzony w dzienniku serwera HTTP. Utrzymywanie w jednym pliku dziennika z serwera HTTP i ISA transakcji jest bardzo użyteczny dla celów administrowania.

lpszMethod

Metoda, w której wniosek został złożony. Jest to odpowiednik zmiennej CGI REQUEST_METHOD.

lpszQueryString

nbsp;Ciąg zakończony znakiem null, zawierający informacje kwerenda. Jest to odpowiednik zmiennej CGI QUERY_STRI&NG.

lpszPathInfo

Ciąg zakończony znakiem null, zawierający informacje dodatkowe ścieżki podanego przez klienta. Jest to odpowiednik zmiennej CGI PATH_INFO.

lpszPathTranslated

Ciąg zakończony znakiem null, zawierający przetłumaczonych ścieżki. Jest to odpowiednik zmiennej CGI PATH_TRANSLATED.

cbTotalBytes

Całkowita liczba bajtów odebranych od klienta. Jest to odpowiednik zmiennej CGI CO&NTENT_LENGTH. Jeśli wartość ta jest równa 0xffffffff, następnie istnieją 4 GB lub więcej dostępnych data.nbsp; W takim przypadku powinna zostać wywołana CHttpServerContext::ReadClient , dopóki nie więcej danych.

cbAvailable

Dostępna liczba bajtów (z łącznej cbTotalBytes) w buforze wskazywanego przez lpbData. Jeśli cbTotalBytes jest taka sama, jak cbAvailable zmienna lpbData będzie punktu do buforu, który zawiera wszystkie dane wysyłane przez klienta. W przeciwnym razie cbTotalBytes będzie zawierać całkowita liczba bajtów odebranych danych. ISA następnie będzie trzeba użyć funkcji wywołania zwrotnego CHttpServerContext::ReadClient do odczytu pozostałej części danych (począwszy od przesunięcia cbAvailable).

lpbData

Punkty do buforu rozmiar cbAvailable , który ma danych przesyłanych przez klienta.

lpszContentType

Ciąg zakończony znakiem null, zawierający typ zawartości danych przesyłanych przez klienta. Jest to odpowiednik zmiennej CGI CONTENT_TYPE.

GetServerVariable

Ta funkcja kopiuje informacje (w tym używane zmienne CGI) odnoszące się do połączenia HTTP lub serwera, do buforu. GetServerVariable przyjmuje następujące parametry:

WriteClient

Wysyła do klienta informacje od wskazanego buforu. WriteClient przyjmuje następujące parametry:

ReadClient

Odczytuje informacje z treści żądania HTTP klienta sieci Web do buforu dostarczonych przez obiekt wywołujący. ReadClient przyjmuje następujące parametry:

ServerSupportFunction

Architektury dostarczać pewne funkcje ogólnego, jak również funkcje, które są specyficzne dla implementacji serwera HTTP. ServerSupportFunction przyjmuje następujące parametry:

Komentarze

Serwer ide&ntyfikuje pliki z extensionsnbsp;.EXE i.BAT jako CGI (wspólny interfejs bramy) plików wykonywalnych. Ponadto serwer będzie identyfikować plik z rozszerzeniem DLL jako wykonywania skryptu.

Gdy serwer ładuje bibliotekę DLL, wywołuje biblioteki DLL w punkcie wejścia CHttpServer::GetExtensionVersion Aby uzyskać numer wersji thenbsp; HTTP_FILTER_REVISIO&N , który ISA opiera się na i krótki opis dla administratorów serwerów. Dla każdego żądania klienta nosi nazwę punktu wejścia CHttpServer::HttpExtensionProc . Rozszerzenie odbiera najczęściej potrzebne informacje, takie jak ciąg kwerendy, informacje o ścieżki, nazwa metody i przetłumaczonych ścieżki.

Zobacz też CHttpServerContext::ReadClient, CHttpServer::GetExtensionVersion, CHttpServer::HttpExtensionProc

Index