Pinvoke.Net is a great site, and I was wondering whether to be happy or sad. On the bright side, it's great to see a community effort like that, and the site is really useful. On the down side, it's sad that pinvoke would be so complicated that something like that would be necessary.
Now to be fair, it's an interesting question to compare PInvoke's complexity relative to the innate complexity of the problem space. Bridging between the world of C++ (with its pointers, anonymous tagged unions, highly-platforms specific structures, unsafe strings, etc) and C# seems challenging. Unfortunately, I don't really have the domain knowledge to make much commentary there.