?

Log in

dotnet :: nativemethods - [darxeth digital]
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.
View:Website (RSS-Feed).
View:RSS трансляция. ATOM трансляция.

Security:
Subject:dotnet :: nativemethods
Time:03:13 am
В замечательной программе FxCop с версии 1.312 появилось новое правило:
MovePInvokesToNativeMethodsClass.

Оно советует распределить все объявления внешних unmanaged функций по трём классам:
SafeNativeMethods, NativeMethods и UnsafeNativeMethods.

Microsoft более менее чётко придерживается этого правила в BCL .Net Framework.

Классы различаются следующим:

SafeNativeMethods - к классу применяется аттрибут [SuppressUnmanagedCodeSecurity].
О безопасности вызовов можно не думать вообще.

NativeMethods - к классу не применяется аттрибута [SuppressUnmanagedCodeSecurity].
В этот класс обычно попадают константы и типы данных (почему methods - не знаю).

UnsafeNativeMethods - к классу применяется аттрибут [SuppressUnmanagedCodeSecurity].
О безопасности вызовов думает непосредственно производящий вызов.

Под безопасностью имеются в виду проверки "клиента" нашей библиотеки на наличие необходимых прав.

Самое интересное в этой истории - аттрибут [SuppressUnmanagedCodeSecurity].
Без FxCop я бы нескоро задумался о том, зачем он нужен.
А он, на самом деле, очень и очень полезен.

Этот аттрибут применяется к классу, содержащему методы P/Invoke или непосредственно к методу.
Он отключает полную проверку стека на permission обращения к unmanaged коду.

Да-да. Если его не применить, каждый вызов метода P/Invoke будет приводит к полному просмотру стека !
Мелочь, но производится эта проверка вовсе не мгновенно.

Так что MovePInvokesToNativeMethodsClass !

<обновляемая версия: MovePInvokesToNativeMethodsClass@npj>

.netexplanationsperformanceinterop
comments: Оставить комментарий Previous Entry Поделиться Next Entry

dotnet :: nativemethods - [darxeth digital]
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.
View:Website (RSS-Feed).
View:RSS трансляция. ATOM трансляция.