IIS includes a pointer to this structure when it either reading or sending raw data. If your filter should be notified for this event, it should register for either the SF_NOTIFY_READ_RAW_DATA or SF_NOTIFY_SEND_RAW_DATA events.
typedef struct _HTTP_FILTER_RAW_DATA { PVOID pvInData; DWORD cbInData; DWORD cbInBuffer; DWORD dwReserved; } HTTP_FILTER_RAW_DATA, *PHTTP_FILTER_RAW_DATA;
This structure is passed to the SF_NOTIFY_READ_RAW_DATA and SF_NOTIFY_SEND_RAW_DATA notification routines. The pvInData pointer can be replaced by filters that want to modify the raw data being sent or received. cbInData and cbInBuffer should also be appropriately updated if the pointer is replaced. The new buffer memory must remain valid until the end of the request by either using AllocMem or by a buffer owned by the filter. In addition, the filter should not attempt to free or otherwise de-allocate the old pvInData pointer. Only the owner of the memory block is allowed to free the buffer. It is not recommended that filters modify the raw data in place. The memory segment may be read only or the data may be cached directly by an ISAPI extension.
Filters that register for the SF_NOTIFY_READ_RAW_DATA or SF_NOTIFY_SEND_RAW_DATA events must be applied at the Web Service level. They can not be applied to an individual Web site. For more information on applying filters see Installing ISAPI Filters in Configuring Applications.