EXTENSION_CONTROL_BLOCK структура

EXTENSION_CONTROL_BLOCK структура имеет следующую форму:

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;

Сервер взаимодействует с ISA через EXTENSION_CONTROL_BLOCK.

Ссылки и выход выше показывает, применяется ли член к сообщениям на продление (IN) или из расширения (ЗАМЕНЕН).

Члены

EXTENSION_CONTROL_BLOCK структура содержит следующие поля:

cbSize

Размер этой структуры.

dwVersion

Версии ofnbsp информации; HTTP_FILTER_REVISIO&N. HIWORD имеет основной номер версии и LOWORD имеет дополнительный номер версии.

ConnID

 Уникальный номер, присвоенный сервером HTTP. Он не должен быть изменен.

dwHttpStatusCode

Статус текущей транзакции после завершения запроса. Может быть одним из следующих:

lpszLogData

Буфер размером HSE_LOG_BUFFER_LEN. Содержит строку нулем журнал информации, характерных для ISA, текущей транзакции. Этот журнал информация будет вводиться в журнале сервера HTTP. Поддержание в один файл журнала с сервера HTTP и ISA сделок является весьма полезным для целей администрирования.

lpszMethod

Метод, с помощью которого был сделан запрос. Это эквивалентно переменная CGI REQUEST_METHOD.

lpszQueryString

nbsp;Завершающим нулем строку, содержащую данные запроса. Это эквивалентно CGI переменной QUERY_STRI&NG.

lpszPathInfo

Завершающим нулем строка, содержащая дополнительные пути, представленную клиентом. Это эквивалентно CGI переменной PATH_INFO.

lpszPathTranslated

Завершающим нулем строка, содержащая переведенный путь. Это эквивалентно переменная CGI PATH_TRANSLATED.

cbTotalBytes

Общее количество байтов, полученных от клиента. Это эквивалентно переменная CGI CO&NTENT_LENGTH. Если это значение равно 0xffffffff, то есть 4 ГБ или более из доступных data.nbsp; В этом случае CHttpServerContext::ReadClient должна вызываться до возвращения данных больше не.

cbAvailable

Имеющиеся количество байтов (из в общей сложности cbTotalBytes) в буфер, на который указывает lpbData. Если cbTotalBytes является таким же, как cbAvailable переменную lpbData будет указывать на буфер, который содержит все данные, отправленные клиентом. В противном случае cbTotalBytes будет содержать общее количество байтов, полученных данных. Затем ISA необходимо использовать функцию обратного вызова CHttpServerContext::ReadClient для чтения остальных данных (начиная с смещение cbAvailable).

lpbData

Указывает буфер размером cbAvailable , содержащего данные, отправленные клиентом.

lpszContentType

Завершающим нулем строка, содержащая тип содержимого данных, отправленных клиентом. Это эквивалентно переменная CGI CONTENT_TYPE.

GetServerVariable

Эта функция копирует информацию (включая переменных CGI) относящихся к подключению HTTP, или на самом сервере, в буфер. GetServerVariable принимает следующие параметры:

WriteClient

Отправляет клиенту информацию из указанного буфера. WriteClient принимает следующие параметры:

ReadClient

Считывает информацию из тела запроса HTTP веб-клиента в буфер, от вызывающего. ReadClient принимает следующие параметры:

ServerSupportFunction

Предоставить МПО с некоторыми общего назначения функций, а также функции, которые являются специфическими для реализации сервера HTTP. ServerSupportFunction принимает следующие параметры:

Комментарии

Сервер определяет файлы с exte&nsionsnbsp;.EXE и.Летучая МЫШЬ как исполняемые CGI (Common Gateway Interface). Кроме того сервер будет идентифицировать файл с расширением DLL как сценарий для выполнения.

Когда сервер загружает библиотеку DLL, он вызывает библиотеку DLL в точке входа CHttpServer::GetExtensionVersion для того чтобы получить номер версии thenbsp; HTTP_FILTER_REVISIO&N ISA базируется на и короткое текстовое описание для администраторов сервера. Для каждого запроса клиента называется точка входа CHttpServer::HttpExtensionProc . Расширение получает информацию часто необходимой, таких как строка запроса, информация о пути, имя метода и переведенный путь.

См. также CHttpServerContext::ReadClient, CHttpServer::GetExtensionVersion, CHttpServer::HttpExtensionProc

Index