Even though the function doesn't have a return value (i.e. the C function returns void and in VB it's a Sub instead of a Function), that doesn't mean it doesn't return anything.
The Sub declaration in VB says that the argument "array" is passed by reference (via the ByRef keyword). This means that "array" will be changed when the function exits. Similarly, the actual function definition in C accepts a pointer to the double "array" (in this case an array of doubles) which it assumes points to an already allocated array. When the function modifies the array, it's modifying same instance of the array allocated from the VB program.
So while you're passing the array to the C function, this array gets modified, so it's passing back the same array updated with whatever values the C function puts there. Have you tried this yet? Based on your description, this sounds like what you're looking for. If it's not, maybe you should describe more specifically what you're trying to accomplish so we can better assist you.