1) Если есть функция .NET, вы, конечно, должны ее использовать - если только у вас нет веских причин не делать этого.
2) Да, есть страница, которая отображает функции Win32 API на методы .NET, хотя она довольно старая - она применима к .NET 1.1. Смотри http://msdn.microsoft.com/en-us/library/aa302340.aspx
Редактировать: Нет более нового списка, о котором я знаю, но можно попробовать один прием - открыть сборки платформы .NET (например, mscorlib, System и т. Д.) В Reflector и найти имя метода Win32. Если сборка вызывает его изнутри, вы сможете найти его таким образом, а затем найти, где на него ссылаются, чтобы отследить его до открытого метода, который вы можете вызвать, если таковой имеется. Если нет, по крайней мере, вы можете скопировать подпись P / Invoke, не выясняя это.