IIS includes a pointer to this structure when it is 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 modify the raw data being sent or received. (cbInData and cbInBuffer must also be appropriately updated if the pointer is replaced.) The new buffer memory must remain valid until the end of the request. The new buffer memory can remain valid by using AllocMem or by using a buffer owned by the filter. In addition, the filter must 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.
Important 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 event must be assigned at the Web service level. They can not be assigned to an individual Web site.