Questo metodo è implementato sul lato client e viene utilizzato per fornire i dati da elaborare a partire da un’origine personalizzata. L’implementazione di questo metodo deve creare un array di dati e trasferirne il controllo al chiamante, che sarà poi responsabile di liberarne la memoria dopo l’uso.
Data[out] Questo parametro si riferisce ai dati da leggere. L’implementazione di questo metodo deve creare questo array e scrivervi i dati richiesti. Il chiamante è responsabile del rilascio di questa memoria quando non è più necessaria.Count[in] Questo parametro specifica il limite massimo del numero di byte da leggere.BytesRead[out, retval] Questo parametro specifica il numero di byte effettivamente letti (ovvero, la quantità di memoria occupata dal buffer Data). Se questo numero è maggiore di 0, il metodo verrà richiamato finché questo parametro non restituirà 0.
L’implementazione client di questo metodo deve garantire che tutte le eccezioni generate all’interno del metodo vengano intercettate e gestite e che nessuna eccezione si propaghi all’esterno del metodo. La propagazione di un’eccezione all’esterno del metodo può portare a risultati imprevedibili (come la terminazione del programma).