Vielleicht könntest du dir mal den D3DSpy ansehen, das ist ein Tool von Microsoft, das alle Direct3D-Aufrufe abfängt. Soweit ich weiß, macht das nichts weiter, als eine "Proxy"-d3d9.dll im Programmverzeichnis abzulegen (weiß nicht, ob und wenn ja welche Schritte erforderlich sind, um die
DLL auch wirklich statt des Originals zu laden), und dann einfach jeden Aufruf direkt an die Original-
DLL weiterzuleiten - dazwischen kann man dann natürlich alles mögliche machen, z.B. alles mitprotokollieren (das macht der D3DSpy), oder auch Daten ändern, wie in deinem Fall.