Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Листинг 7.5. Файл chapter7/NotebookISAPI/ishello. c




// Розширення ISAPI ishello.c

// Приклад розширення ISAPI, що відображає

// уміст cookie

//

// (С) Фролов А.В., 1997, 1998

// E-mail: [email protected]

// WWW: http://www.glasnet.ru/~frolov

// або

// http://www.dials.ccas.ru/frolov

#include <windows.h>

#include <httpext.h>

// Функція GetExtensionVersion

// Запис версії інтерфейсу ISAPI і

// рядки опису розширення

BOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO *pVer)

{

// Записуємо версію інтерфейсу ISAPI

pVer->dwExtensioriVersion =

MAKELONG(HSE_VERSION_MINOR, HSE_VERSION_MAJOR);

// Записуємо рядок опису розширення

lstrcpyn(pVer->lpszExtensionDesc,

"Cookie show ISAPI DLL", HSE_MAX_EXT_DLL_NAMS_LEN);

return TRUE;

}

// Функція HttpExtensionProc

DWORD WINAPI HttpExtensionProc (EXTENSION_CONTROL_BLOCK *lpECB)

{

CHAR szBuff[4096];

CHAR szTempBuf[4096];

DWORD dwSize;

// Нульовий код стана - ознака успішного виконання

lpECB->dwHttpStatusCode = 0;

// Записуємо в буфер заголовок HTTP і початковий

// фрагмент формованого динамічно документа HTML

wsprintf(szBuff, "Content-Type: text/html\r\n\r\n"

"<HTML><HEAD><TITLE>Simple ISAPI

Extension</TITLE></HEAD>\n"

"<BODY BGCOLOR=#FFFFFF><H2>Hello from ISAPI

Extension!</H2>\n");

// Добавляємо розділювальну лінію strcat(szBuff, "<HR>");

// Добавляємо версію інтерфейсу ISAPI

wsprintf(szTempBuf, "<P>Extension Version: %d. %d",

HIWORD(lpECB->dwVersion), LOWORD(lpECB->dwVersion));

strcat (szBuff, szTempBuf);

// Назва методу передачі даних

wsprintf(szTempBuf, "<BR>Method: %s", lpECB->lpszMethod);

strcat(szBuff, szTempBuf);

// Рядок параметрів запуску розширення ISAPI

wsprintf(szTempBuf, "<BR>QueryString: %s", lpECB->lpszQueryString);

strcat(szBuff, szTempBuf);

// Фізичний шлях до програмного файла розширення ISAPI

wsprintf(szTempBuf, "<BR>PathTranslated: %s",

lpECB->lpszPathTranslated);

strcat(szBuff, szTempBuf);

// Повний розмір даних, що потрібно получить

wsprintf (szTempBuf, "<BR>TotalBytes: %d",

lpECB->cbTotalBytes);

strcat(szBuff, szTempBuf);

// Тип даних

wsprintf (szTempBuf, "<BR>ContentType: %s",

lpECB->lpszContentType);

strcat(szBuff, szTempBuf);

// Відображаємо вміст COOKIE

strcat(szBuff, "<HR><P><B>Cookie:</B><BR>");

dwSize = 4096;

lpECB->GetServerVariable(lpECB->ConnID,

(LPSTR)"HTTP_COOKIE", (LPVOID)szTempBuf, &dwSize);

strcat(szBuff, szTempBuf);

// Кінцевий фрагмент документа HTML

strcat (szBuff, "</BODY></HTML>");

// Посилаємо вміст буфера віддаленому користувачу

if(!lpECB->ServerSupportFunction(lpECB->ConnID,

HSE_REQ_SEND_RESPONSE_HEADER, NULL, NULL,

(LPDWORD)szBuff))

{

// Якщо послати дані не вдалося,

// завершуємо роботу нашого розширення ISAPI

// с кодом помилки

return HSE_STATUS_ERROR;

}

// Записуємо код успішного завершення

lpECB->dwHttpStatusCode = 200;

// Повертаємо ознаку успішного завершення

return HSE_STATUS_SUCCESS;

}

 

Файл визначення модуля для бібліотеки DLL розширення приведений у листинге 7.6.

 




Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 302; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.