HTTP_FILTER_CONTEXT структура має такий вигляд:
typedef struct _HTTP_FILTER_CONTEXT
{
DWORD cbSize; //IN
DWORD Revision; //IN
PVOID ServerContext; //IN
DWORD ulReserved; //IN
BOOL fIsSecurePort; //IN
PVOID pFilterContext; //IN/OUT
BOOL (WINAPI * GetServerVariable) (
struct _HTTP_FILTER_CONTEXT * pfc,
LPSTR lpszVariableName,
LPVOID lpvBuffer,
LPDWORD lpdwSize
);
BOOL (WINAPI * AddResponseHeaders) (
struct _HTTP_FILTER_CONTEXT * pfc,
LPSTR lpszHeaders,
DWORD dwReserved
);
BOOL (WINAPI * WriteClient) (
struct _HTTP_FILTER_CONTEXT * pfc,
LPVOID Buffer,
LPDWORD lpdwBytes,
DWORD dwReserved
);
VOID * (WINAPI * AllocMem) (
struct _HTTP_FILTER_CONTEXT * pfc,
DWORD cbSize,
DWORD dwReserved
);
BOOL (WINAPI * ServerSupportFunction) (
struct _HTTP_FILTER_CONTEXT * pfc,
enum SF_REQ_TYPE sfReq,
PVOID pData,
DWORD ul1,
DWORD ul2
);
} HTTP_FILTER_CONTEXT, *PHTTP_FILTER_CONTEXT;
Посилання В або IN/OUT над вказують, чи член застосовується лише для повідомлень на фільтр (IN) або обох до і з фільтр (IN/OUT).
Члени
cbSize
Розмір цієї структури, у байтах.
Редакція
nbsp;Перегляд рівня цієї структури. Менше або дорівнює версія HTTP_FILTER_REVISIO&N.
ServerContext
Зарезервовано для використання сервера.
ulReserved
Зарезервовано для використання сервера.
fIsSecurePort
Правда, показує, що ця подія відбувається через безпечне порт.
pFilterContext
Вказівник, щоб використовувати фільтр для будь-якої інформації контекст, який фільтр хоче спілкуватися з цього запиту. Будь-яку пам'ять, пов'язаних з цього запиту можна безпечно звільнений під час SF_NOTIFY_END_OF_NET_SESSION повідомлення.
GetServerVariable
Вказівник на функцію, щоб отримати відомості про сервер і це co&nnection.nbsp; Див CHttpServerContext::GetServerVariable деталі. GetServerVariable займає наступні параметри
AddResponseHeaders
Вказівник на функцію, яка додає заголовок HTTP відповіді. Перегляньте опис HSE_REQ_SEND_RESPONSE_HEADER в CHttpServerContext::ServerSupportFunction , для деталей. AddResponseHeaders займає наступні параметри
WriteClient
Вказівник на функцію, яка посилає необроблені дані клієнта. Див CHttpFilterContext::WriteClient деталі. WriteClient займає наступні параметри
AllocMem
Вказівник на функцію, використовуються виділити пам'ять. Будь-який пам'яті з ця функція автоматично бути звільнені, коли виконати запит. AllocMem займає наступні параметри:
ServerSupportFunction
Вказівник на функцію для розширення ISAPI фільтр API. Параметри, перераховані нижче, є специфічними для ISA, використовується.
SF_REQ_SE&ND_RESPONSE_HEADERnbsp; Надсилання повний HTTP сервер відповідь заголовок включаючи статус, Версія сервера, повідомлення час і MIME версії. Серверних розширень необхідно додати іншу інформацію в кінці, таких як Content-type, контент довжина і так далі, після чого додаткові '\r\n'.
SF_REQ_ADD_HEADERS_O&N_DENIALnbsp; Якщо сервер відмовляє запиту HTTP, додати вказаний заголовки відповідь помилка сервера. Це дозволяє на автентифікації фільтр для реклами своїх послуг без фільтрації кожен запит. Як правило, заголовки буде WWW-Authenticate заголовки з настроюваної автентифікації схеми, але без обмеження розміщена на те, що заголовки можуть бути визначені.
SF_REQ_SET_&NEXT_READ_SIZEnbsp; Використовується тільки необроблені дані фільтри, які повертають SF_STATUS_READ_NEXT.
Коментарі
Нижче наведені можливі значення параметрів ServerSupportFunction:
sfReq | pData | ul1, ul2 |
SF_REQ_SEND_RESPONSE_HEADER | Нульовий рядок вказують на необов'язковий стану рядок (тобто, "401 доступ доступі») або NULL за замовчуванням реакція" 200 ОК ". | Нульовий рядок вказують на додаткові дані, щоб бути включені і з верхнього колонтитула. Якщо значення NULL, заголовок завершується з пустого рядка. |
SF_REQ_ADD_HEADERS_ON_DENIAL | Нульовий рядок вказують на один або більше рядків заголовків з припинення '\r\n'. | |
SF_REQ_SET_NEXT_READ_SIZE | Розмір у байтах за наступний читання. |
Дивіться також CHttpFilter::HttpFilterProc, CHttpFilter::OnLog, CHttpServerContext, CHttpServerContext::GetServerVariable, CHttpServerContext::ServerSupportFunction, CHttpServerContext::WriteClient