It would be nice to have some tests for this, checking that your implementation matches native behavior for both normal and edge cases (e.g. for the latter, what happens when data or param are NULL). You can probably use the last couple of tests at the end of d3dx9_36/tests/effect.c as reference.
Also nitpick, the prefix in the commit subject should be "d3dx9:".