You should be able to use either strings or StringBuilders.
The important thing, above anything else is that since you're dealing with an unmanaged code that is expecting to use a reference to a unicode string that you should specify to the Marshaler how to marshal your string.
You'll need to use the attributing:
[MarshalAs(UnmanagedType.LPWStr)] // I'm guessing LPWStr, test this.
Read up on
UnmanagedType, and
marshalling strings
Edit, you may have to pass it as IntPtr instead, as you're needing to deal with levels of indirection.