How exactly this is supposed to work? When you mentioned such dx8-vb style wrappers exist I thought about usual scripting way to create and access them, yet your idls don't define a type library and interface wrappers are not IDispatch descendants. Normal way is to create factory object using ProgID for example, in this case DXD8, and then all method are requested using IDispatch.
Also, is it possible to reuse actual dx8 headers for enums and the like ?
P.S. for enum members please use hex notation for fourcc values, and FORCE_DWORD things.