| title | IHttpRequest::InsertEntityBody Method |
|---|---|
| description | Learn how the IHttpRequest::InsertEntityBody method inserts a new entity body into the existing HTTP request body. |
| ms.date | 10/07/2016 |
| ms.assetid | 8e30471e-981b-9026-dc07-5dd2c1e81b02 |
Inserts a new entity body into the existing HTTP request body.
virtual HRESULT InsertEntityBody(
IN VOID* pvBuffer,
IN DWORD cbBuffer
) = 0; pvBuffer
[IN] A pointer to a VOID buffer that contains the request entity body.
cbBuffer
[IN] A DWORD that contains the size, in bytes, of the buffer.
An HRESULT. Possible values include, but are not limited to, those in the following table.
| Value | Description |
|---|---|
| S_OK | Indicates that the operation was successful. |
The InsertEntityBody method inserts the entity body that is pointed to by the pvBuffer parameter into the HTTP request entity body.
Note
The insertion point of the new entity body is before any remaining unread entity body that can be subsequently retrieved from the Web client.
Important
IIS does not make a copy of the entity body buffer. Your module's entity buffer must be preserved until the end of the request.
This method does not update the Content-Length header value. A module that uses this method must update the Content-Length separately.
The following code example demonstrates how create an HTTP module that calls the IHttpContext::AllocateRequestMemory method to allocate a 1-KB buffer. The module then copies the string "Hello World" into the buffer. Finally, the module calls the InsertEntityBody method to replace the preloaded HTTP request entity body with the buffer and then exits.
[!code-cppIHttpRequestInsertEntityBody#1]
Your module must export the RegisterModule function. You can export this function by creating a module definition (.def) file for your project, or you can compile the module by using the /EXPORT:RegisterModule switch. For more information, see Walkthrough: Creating a Request-Level HTTP Module By Using Native Code.
You can optionally compile the code by using the __stdcall (/Gz) calling convention instead of explicitly declaring the calling convention for each function.
| Type | Description |
|---|---|
| Client | - IIS 7.0 on [!INCLUDEwinvista] - IIS 7.5 on Windows 7 - IIS 8.0 on Windows 8 - IIS 10.0 on Windows 10 |
| Server | - IIS 7.0 on [!INCLUDEwinsrv2008] - IIS 7.5 on Windows Server 2008 R2 - IIS 8.0 on Windows Server 2012 - IIS 8.5 on Windows Server 2012 R2 - IIS 10.0 on Windows Server 2016 |
| Product | - IIS 7.0, IIS 7.5, IIS 8.0, IIS 8.5, IIS 10.0 - [!INCLUDEiisexp75], [!INCLUDEiisexp80], [!INCLUDEiisexp100] |
| Header | Httpserv.h |