Share via


ReadClient

This function reads data from the body of the client's HTTP request.

BOOL ReadClient(
HCONN hConn,
LPVOID lpvBuffer,
LPDWORD lpdwSize );

Parameters

  • hConn
    A connection handle.
  • lpvBuffer
    Points to the buffer area to receive the requested information.
  • lpdwSize
    Points to a DWORD that indicates the number of bytes available in the buffer specified by lpvBuffer. On return, lpdwSize will point to a DWORD that contains the number of bytes actually transferred into the buffer.

Return Values

If the function succeeds, the return value is TRUE. If an error occurs, the return value is FALSE. The GetLastError function can be called to determine the error.

Remarks

The ReadClient function reads information from the body of the Web client's HTTP request into the buffer supplied by the caller. Thus, the call can be used to read data from an HTML form that uses the POST method.

It is not necessary to call ReadClient unless the EXTENSION_CONTROL_BLOCK member cbTotalBytes is larger than cbAvailable (also in the EXTENSION_CONTROL_BLOCK). If the buffer size that your extension has allocated, specified by lpdwSize, is less than the number of bytes available, as specified by the EXTENSION_CONTROL_BLOCK member cbAvailable, then your ReadClient call will return immediately with the requested amount of data. Your extension will need to call ReadClient multiple times to retrieve all the data. If the buffer size is greater than the number of bytes available, ReadClient will fill the available space.

Note   ReadClient will time out after 60 seconds, regardless of any IIS server timeout settings. If you expect that the client of your ISAPI extension will regularly take more than 60 seconds to respond to a read, then you should performs asynchronous reads through the HSE_REQ_ASYNC_READ_CLIENT ServerSupportFunction, instead of synchronous ReadClient calls. Asynchronous read requests make better use of the IIS I/O thread pool, and can have timeout times regulated using the connection timeout value, accessible in the MMC.

Alternatively, if you are unable to use asynchronous reads, you can loop by initiating another synchronous ReadClient call after the 60-second timeout period has elapsed.

If the socket on which the server is listening to the client is closed, ReadClient will return TRUE, but with zero bytes read.

Requirements

Runs On Versions Defined in Include Link to
Windows CE OS 3.0 and later httpext.h   Httpextn.lib

Note   This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.

See Also

GetLastError, ServerSupportFunction, EXTENSION_CONTROL_BLOCK

 Last updated on Tuesday, July 13, 2004

© 1992-2000 Microsoft Corporation. All rights reserved.