Hello,
I'm a systems engineer with strong experience in both C/C++ and VB6. For Visual Basic, I've developed interfaces and COM wrappers with DLLs and object libraries. In some cases, I've also been in charge of the development of the API which extends the functionality of Visual Basic, that gets wrapped in some further stage.
I guess you don't have the source code of the base DLL. It's very important to know what it is supposed to do. Depending on its complexity, it's probably required a short documentation of every exported function.
The usefulness of the COM wrapper is always defined by the end user. You talk about passing pointers to structs in the (current) DLL level. The wrapper could allow VB to pass its own structs in a one-to-one field correspondence, but maybe you want to ged rid of this work, and pass just a few important values as simple parameters, and let the wrapper to create, fill and pass (to the base DLL) a struct with the rest of fields initialized to some default values you will always use (depending on your case, of course). So, I'm open to suggestions.
My development environment is VC++. I will use ATL for this project.
Sincerely,
DEN!