http://blogs.msdn.com/b/silverlightshanghai/archive/2009/03/29/net-interop-p-invoke-reverse-p-invoke.aspx