Сервер Web своими руками. Язык HTML, приложения CGI и ISAPI




Функция HttpExtensionProc


Теперь рассмотрим вторую функцию, которую должна экспортировать библиотека DLL расширения ISAPI. Она называется HttpExtensionProc и имеет следующий прототип:

DWORD WINAPI HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB);

Функция HttpExtensionProc получает единственный параметр - указатель на структуру типа EXTENSION_CONTROL_BLOCK, определенную в файле httpext.h:

typedef struct _EXTENSION_CONTROL_BLOCK 

{

  DWORD cbSize;    // размер структуры в байтах

  DWORD dwVersion; // версия спецификации ISAPI

  HCONN ConnID;    // идентификатор канала

  DWORD dwHttpStatusCode; // код состояния HTTP

  CHAR  lpszLogData[HSE_LOG_BUFFER_LEN]; // текстовая строка,

        // закрытая двоичным нулем, в которой находится информация

        // протоколирования, специфичная для данного расширения

  LPSTR lpszMethod;         // переменная REQUEST_METHOD

  LPSTR lpszQueryString;    // переменная QUERY_STRING

  LPSTR lpszPathInfo;       // переменная PATH_INFO

  LPSTR lpszPathTranslated; // переменная PATH_TRANSLATED

  DWORD  cbTotalBytes;    // полный размер данных, полученных от

                          // навигатора

  DWORD  cbAvailable;     // размер доступного блока данных

  LPBYTE lpbData;         // указатель на доступный блок данных

                          // размером cbAvailable байт

  LPSTR  lpszContentType; // тип принятых данных

  // Функция GetServerVariable для получения значения переменных

  BOOL (WINAPI * GetServerVariable)(HCONN hConn,

     LPSTR lpszVariableName, LPVOID lpvBuffer, LPDWORD lpdwSize);

  // Функция WriteClient для посылки данных удаленному пользователю

  BOOL (WINAPI * WriteClient)(HCONN ConnID,

     LPVOID Buffer, LPDWORD lpdwBytes, DWORD dwReserved);

  // Функция ReadClient для получения данных от удаленного

  // пользователя

  BOOL (WINAPI * ReadClient) (HCONN ConnID,

     LPVOID lpvBuffer, LPDWORD lpdwSize);

  // Вспомогательная функция ServerSupportFunction

  // для выполнения различных операций




Содержание  Назад  Вперед