Skip to content

LowLevelReadString

Reads raw bytes directly from a device without going through the formatted I/O read buffer and returns the results as a string.

virtual HRESULT LowLevelReadString(CString& pBuf, long cchDesired, long lTimeout = CUR_TIMEOUT) override;
virtual HRESULT LowLevelReadString(BSTR* pBuf, long cchDesired, long lTimeout = CUR_TIMEOUT) override;

pBuf

[out] String read from the device.

cchDesired

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

lTimeout

[in] I/O timeout value in milliseconds.

Returns S_OK if successful, otherwise a failure HRESULT.

Unlike the buffered I/O functions, such as Queryf, Read, ReadNumber, etc., the LowLevelReadString function reads raw bytes directly from the device, rather than going through the formatted I/O read buffer.

The following example demonstrates use of the LowLevelReadString function.

CoAcme4321.cpp
STDMETHODIMP Acme4321::IAcme4321_QueryName(BSTR* pbstrName)
{
HRESULT hr = S_OK;
// Read up to 50 bytes and return as a BSTR
hr = io.LowLevel.LowLevelReadString(pbstrName, 50);
return hr;
}