Мы знаем, что класс .NET framework инкапсулирует Win32 API, теперь мне интересно, как класс .NET framework вызывает Win32 API?
Способы, которые я знаю до сих пор:
- Через P/Invoke
- VС++/командная строка
- И 1 и 2
Кто-нибудь знает ответ?
Мы знаем, что класс .NET framework инкапсулирует Win32 API, теперь мне интересно, как класс .NET framework вызывает Win32 API?
Способы, которые я знаю до сих пор:
Кто-нибудь знает ответ?
Большинство классов фреймворка используют P/Invoke, если им нужно вызывать неуправляемые API. Запустите Reflector в System.Windows.Forms, и вы увидите классы NativeMethods и UnsafeNativeMethods, которые выполняют много P/Invoke. Точно так же System.Drawing имеет класс SafeNativeMethods, который объявляет все GDI+ P/Invokes.
Другой основной метод взаимодействия, о котором вы не упомянули, — это COM-взаимодействие. Я не знаю, насколько широко это используется в рамках фреймворка, но я предполагаю, что некоторые элементы WMI (System.Management) используют его довольно интенсивно, плюс, конечно, поддержка WinForms ActiveX.