![]() | ReadAsync |
Reads data from a device asynchronously.
virtual HRESULT ReadAsync(BYTE* pBuf, long cbDesired, ULONG* plJobId) abstract;
[in] Data read from the device.
[in] Number of bytes to read from the device.
[in] Asynchronous job identifier for the operation.
Returns S_OK if successful, otherwise a failure HRESULT.
The ReadAsync function asynchronously sends data to the device. Unlike the buffered I/O functions, such as Queryf, ReadReadNumber, etc., the ReadAsync function reads raw bytes directly from the device, rather than going through formatted I/O read buffer.
The ReadAsync function returns immediately. An I/O Completion event will be posted when the transfer is actually completed. The plJobId can be used with an I/O Completion event to identify which asynchronous write operation completed.
The following example demonstrates use of the ReadAsync function.
// CoAcme4321.cpp STDMETHODIMP Acme4321::IAcme4321_Read(SAFEARRAY** ppsaData) { HRESULT hr = S_OK; long lJobId; hr = io.LowLevel.ReadAsync(ppsaData, 1000, &lJobId); return hr; }