A while back I posted some thoughts on Win32 signatures… The CLR interop team has been hard at work figuring out the right solution, expect to see more soon.  In the mean time check out these PInvoke signatures the C# team posttest a while back.  Looks like they address at least part of the issue.