Marshaling with C# – Chapter 3: Marshaling Compound Types