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或IN/OUT指明成员是仅用于发送到过滤器的消息(IN)还是用于发送到过滤器和从过滤器发出的消息(OUT)。
成员:
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或IN/OUT指明成员是仅用于发送到过滤器的消息(IN)还是用于发送到过滤器和从过滤器发出的消息(OUT)。
成员:
cbSize | 以字节数计的结构大小。 | ||||||||||||
Revision | 结构的修正级别,小于或等于HTTP_FILTER_REVISION的版本。 | ||||||||||||
ServerContext | 为服务器的使用而保留。 | ||||||||||||
ulReserved | 为服务器的使用而保留。 | ||||||||||||
fIsSecurePort | 如果为TRUE表明这一事件通过一个安全端口发生。 | ||||||||||||
pFilterContext | 过滤器使用的指针,指向环境信息,过滤器将之与请求相关联。在SF_NOTIFY_END_OF_NET_SESSION通知中可以安全地释放与请求相关的内存。 | ||||||||||||
GetServerVariable | 函数的指针,此函数用于获取服务器和连接的信息。有关细节参见CHttpServerContext::GetServerVariable。GetServerVariable具有以下参数:
| ||||||||||||
AddResponseHeaders | 函数的指针,此函数在HTTP响应上加上头。有关细节参见CHttpServerContext::ServerSupportFunction中对于HSE_REQ_SEND_RESPONSE_HEADER的描述。AddResponseHeaders具有以下参数:
| ||||||||||||
WriteClient | 函数的指针,此函数将原始数据发回客户。有关细节参见CHttpFilterContext::WriteClient。WriteClient具有以下参数:
| ||||||||||||
AllocMem | 指向用来分配内存的函数的指针。当请求结束时,这个函数分配的内存将被自动释放。AllocMem具有以下参数:
| ||||||||||||
ServerSupportFunction | 指向用来扩展ISAPI过滤器API的指针。下面列出的参数与使用的ISA有关:
| ||||||||||||
pData | 字符串指针。与ISA有关。对sfReg的每个值,相应的pData值参见注释部分的表格。 | ||||||||||||
ul1, ul2 | 与ISA有关。对sfReg的每个值,相应的值参见注释部分的表格。 |