Skip to content

LowLevelReadNoPoll

Reads raw bytes directly from a device without going through the formatted I/O read buffer.

virtual HRESULT LowLevelReadNoPoll(BYTE* pBuf, long cbDesired, long* pcbActual, long lTimeout = CUR_TIMEOUT) override;
virtual HRESULT LowLevelReadNoPoll(SAFEARRAY** pBuf, long cbDesired, long lTimeout = CUR_TIMEOUT) override;

pBuf

[out] Array of bytes read from the device.

cbDesired

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

pcbActual

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

lTimeout

[in] I/O timeout value in milliseconds.

Returns S_OK if successful, otherwise a failure HRESULT.

This function behaves identically to the LowLevelRead function except that the device is not polled for errors after the data is read.

The following example demonstrates use of the LowLevelReadNoPoll function.

CoAcme4321.cpp
STDMETHODIMP Acme4321::IAcme4321_QueryData(SAFEARRAY** ppsaData)
{
HRESULT hr = S_OK;
// Read 1000 bytes
hr = io.LowLevel.LowLevelReadNoPoll(ppsaData, 1000);
return hr;
}