Как класс .NET Framework вызывает API платформы?

Мы знаем, что класс .NET framework инкапсулирует Win32 API, теперь мне интересно, как класс .NET framework вызывает Win32 API?

Способы, которые я знаю до сих пор:

  1. Через P/Invoke
  2. VС++/командная строка
  3. И 1 и 2

Кто-нибудь знает ответ?


person Benny    schedule 13.11.2009    source источник


Ответы (1)


Большинство классов фреймворка используют P/Invoke, если им нужно вызывать неуправляемые API. Запустите Reflector в System.Windows.Forms, и вы увидите классы NativeMethods и UnsafeNativeMethods, которые выполняют много P/Invoke. Точно так же System.Drawing имеет класс SafeNativeMethods, который объявляет все GDI+ P/Invokes.

Другой основной метод взаимодействия, о котором вы не упомянули, — это COM-взаимодействие. Я не знаю, насколько широко это используется в рамках фреймворка, но я предполагаю, что некоторые элементы WMI (System.Management) используют его довольно интенсивно, плюс, конечно, поддержка WinForms ActiveX.

person itowlson    schedule 13.11.2009