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, потім існують чотири гігабайт або більше з доступних 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

Надати в IASs деякі функції загального призначення, а також функції, які є специфічними для впровадження HTTP-сервер. ServerSupportFunction займає наступні параметри:

Коментарі

Сервер визначає файли з exte&nsionsnbsp;.EXE і.BAT як CGI (Загальний інтерфейс шлюзу) виконуваних файлів. Крім того, сервер буде визначити файл із розширенням DLL як сценарій для виконання.

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

Дивіться також CHttpServerContext::ReadClient, CHttpServer::GetExtensionVersion, CHttpServer::HttpExtensionProc

Index