Du wirst Zugriff auf SharedMem und
TCP nicht in das DataProvider-Konzept zwängen können.
Ich würde tatsächlich wie WM_Close vorgeschlagen hat ein Interface definieren, welches den Datenzugriff kapselt.
Genauso würde ich, wenn es Sinn macht, lediglich ein Interface für die eigentlichen Daten definieren.
In .NET kannst Du Databinding ja auch ohne weiteres gegen beliebige Objekte (oder eben Interfaces) definieren, und genau hiervon würde ich gebrauch machen. Dann brauchst Du Dich auch nicht mit dem DataSet rumschlagen. Ausser dass es langsam und nicht threadsafe ist und damit ausschliesslich Probleme beschert ist es nämlich nicht wirklich zu was gut.