Доступ К Microsoft.С Win32.UnsafeNativeMethods?

Microsoft имеет очень хорошую оболочку Windows API, включенную в .NET framework. Он хранится в Microsoft.С Win32.UnsafeNativeMethods , Microsoft.С Win32.SafeNativeMethods и Microsoft.С Win32.Собственные методы.К сожалению, они недоступны, потому что они объявлены как private. Есть ли способ легко получить к ним доступ?

4 ответов


большинство определений методов в этих классах (если не все) являются extern декларации DllImport атрибуты, которые ссылаются на функции в API Windows через P / Invoke. In не имеет значения, где находятся эти декларации. Вы можете создать свой собственный класс с именем UnsafeNativeMethods или SafeNativeMethods и поместить объявления, ссылающиеся на те же функции Windows API. Вы найдете подписи многих функций Windows API для C# on pinvoke.net.


большая часть функций, содержащихся в этих классах, предоставляется самой .NET framework; вы должны искать (или спрашивать здесь) перед выполнением вызовов API.

отвечая на ваш вопрос, нет.
Лучшее, что вы можете сделать, это скопировать их из отражателя или справочного источника.


для чего это стоит, я всегда думал, что должен был быть kernel32.взаимодействие.dll и т. д. со статическими методами уже Dllimport'Ed. Но я прибегал к созданию своего собственного По мере необходимости. За эти годы я обнаружил, что редко использую больше нескольких из них, но это такая боль в заднице, когда мне нужен API, который я еще не импортировал.


причиной может быть влияние SuppressUnmanagedCodeSecurityAttribute на безопасность. Проверка переместить P / вызывает класс NativeMethods