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:
Nazwa zmiennej | Opis |
ALL_HTTP | Wszystkie nagłówki HTTP, które nie były już analizowane na jeden z powyższych zmiennych. Zmienne są w postaci HTTP_lt; nazwa pola nagłówka & gt. |
AUTH_PASS | Pobierze hasła odpowiadającego REMOTE_USER jako dostarczonych przez klienta. Będzie on ciąg zakończony znakiem null. |
AUTH_TYPE | Zawiera typ uwierzytelniania used.nbsp; &Na przykład jeśli jest używane uwierzytelnianie podstawowe, ciąg będzie "Podstawowe". Dla systemu Windows NT wezwanie odpowiedź będzie on „NTLM". Inne schematy uwierzytelniania mają inne ciągi. Ponieważ nowe typy uwierzytelniania mogą być dodawane do serwera internetowego, nie jest możliwe sporządzenie wykazu wszystkich możliwych ciągów. Jeśli ciąg jest pusta, wówczas jest używane nie uwierzytelnianie. |
CONTENT_LENGTH | Liczba bajtów, które skryptu można oczekiwać od klienta. |
CONTENT_TYPE | Typ zawartości informacji dostarczonych w treści żądania POST. |
GATEWAY_INTERFACE | Zmiana specyfikacji CGI, który spełnia ten serwer. Bieżąca wersja jest CGI/1.1. |
SPECJALNY RODZAJ | Szczególny przypadek HTTP nagłówka. Wartości zaakceptować: pól są łączone, oddzielone ",". Na przykład, jeżeli następujące wiersze są częścią nagłówka HTTP
następnie zmienna specjalny rodzaj będzie mieć wartość:
|
PATH_INFO | Informacje dodatkowe ścieżki, podane przez klienta. To obejmuje końcowa część adresu URL po nazwie skryptu, ale przed ciąg kwerendy (jeśli występują). |
PATH_TRANSLATED | Jest to wartość zmiennej PATH_INFO, ale z dowolną nazwę ścieżki wirtualnej rozwinięte w specyfikacji katalogu. |
QUERY_STRING | Informacje, które następuje ? w adresie URL, który wywołuje dany skrypt. |
REMOTE_ADDR | Adres IP klienta. |
ZMIENNA REMOTE_HOST | Nazwa hosta klienta. |
REMOTE_USER | Zawiera nazwa_użytkownika dostarczonych przez klienta i uwierzytelniane przez serwer. |
REQUEST_METHOD | Metoda żądania HTTP. |
SCRIPT_NAME | Nazwa programu skrypt wykonywane. |
NAZWA_SERWERA | Nazwa hosta serwera (lub adres IP), jak powinien pojawić się w samoodwołujących adresów URL. |
SERVER_PORT | Port TCP/IP, na którym zostało odebrane żądanie. |
SERVER_PROTOCOL | Nazwa i wersja protokołu pobierania informacji odnoszących się do tego żądania. Zwykle HTTP/1.0. |
SERVER_SOFTWARE | Nazwa i wersja serwera sieci web, na którym uruchomiono CGI program. |
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