Wenn ich Dich richtig verstanden habe, dann ist das ein typisches Szenario für einen Proxy.
In dem Fall baust Du Dir eine
DLL mit den gleichen öffentlichen Schnittstellen wie die bestehende. Deine
DLL macht dann nichts anderes, als alle Aufrufe an die ursprüngliche
DLL weiter zu leiten. Dann kannst Du alle Daten, die durch Deine Proxy-
DLL laufen beliebig mitloggen.
Wenn es zeitkritisch ist, würde ich den ganzen Datenstrom mitloggen und separat auswerten.
Dann brauchst Du Deine
DLL dem Programm nur noch unterzujubeln.