КАТЕГОРИИ: Архитектура-(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: frolov@glas.apc.org // 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; Просмотров: 325; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |