Skip to content

Read

Reads data from a device.

virtual HRESULT Read(char& ch, bool bFlush = true, long lTimeout = CUR_TIMEOUT) override;
virtual HRESULT Read(BYTE* pBuf, long cbDesired, long* pcbActual, bool bFlush = true, long lTimeout = CUR_TIMEOUT) override;
virtual HRESULT Read(SAFEARRAY** pBuf, long cbDesired, bool bFlush = true, long lTimeout = CUR_TIMEOUT) override;

ch

[out] Single character read from the device.

pBuf

[out] Array of bytes read from the device.

cbDesired

[in] Number of elements (bytes) to read from the device.

pcbActual

[out] Actual number of elements (bytes) read from the device.

bFlush

[in] If true, the formatted I/O read buffer is flushed.

lTimeout

[in] I/O timeout value in milliseconds.

Returns S_OK if successful, otherwise a failure HRESULT.

The Read function reads raw bytes from the formatted I/O read buffer. If the bFlush parameter is true, then the contents of the I/O read buffer are flushed. Flushing the read buffer ensures no unintentional data remains in the buffer for subsequent reads.

The following example demonstrates use of the Read function.

CoAcme4321.cpp
STDMETHODIMP Acme4321::IAcme4321_QueryData(SAFEARRAY** ppsaData)
{
HRESULT hr = S_OK;
// Read 1000 bytes. Type of elements is automatically determined from the type of the ppsaData SAFEARRAY parameter
hr = io.Read(ppsaData, 1000);
return hr;
}