Доступ к Microsoft.Win32.UnsafeNativeMethods? - PullRequest
7 голосов
/ 31 января 2010

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

Ответы [ 4 ]

2 голосов
/ 31 января 2010

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

1 голос
/ 31 января 2010

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

1 голос
/ 31 января 2010

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

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

0 голосов
/ 31 января 2010

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

...