Diese Methode wird clientseitig implementiert und dient dazu, die zu verarbeitenden Daten aus einer benutzerdefinierten Quelle einzulesen. Ihre Implementierung dieser Methode sollte ein Datenarray erstellen und die Kontrolle darüber an den Aufrufer übergeben. Dieser ist anschließend dafür verantwortlich, den Speicher nach der Verwendung freizugeben.
Data[out] Dieser Parameter bezieht sich auf die zu lesenden Daten. Ihre Implementierung dieser Methode sollte dieses Array erstellen und die erforderlichen Daten hineinschreiben. Der Aufrufer ist dafür verantwortlich, diesen Speicher freizugeben, wenn er nicht mehr benötigt wird.Count[in] Dieser Parameter gibt die Obergrenze für die Anzahl der zu lesenden Bytes an.BytesRead[out, retval] Dieser Parameter gibt die Anzahl der tatsächlich gelesenen Bytes an (das heißt, die vom Data-Puffer belegte Speichergröße). Wenn diese Zahl größer als 0 ist, wird die Methode erneut aufgerufen, bis dieser Parameter 0 zurückgibt.
Die Client-Implementierung dieser Methode muss sicherstellen, dass alle innerhalb der Methode ausgelösten Ausnahmen abgefangen und behandelt werden und dass keine Ausnahmen über die Methode hinaus propagiert werden. Die Propagierung einer Ausnahme über die Methode hinaus kann zu unvorhersehbaren Ergebnissen führen (z. B. zur Beendigung des Programms).