.NET フレームワーク クラスが Win32 API をカプセル化することはわかっていますが、.NET フレームワーク クラスがどのように Win32 API を呼び出すのか疑問に思っています。
私がこれまでに知っている方法:
- P/Invoke 経由
- VC++/CLI
- 1と2の両方
誰も答えを知っていますか?
ほとんどのフレームワーククラスは、アンマネージAPIを呼び出す必要がある場合にP/Invokeを使用します。System.Windows.FormsでReflectorを起動すると、多くのP/Invokeを実行するNativeMethodsおよびUnsafeNativeMethodsと呼ばれるクラスが表示されます。同様に、System.Drawingには、すべてのGDI + P/Invokesを宣言するSafeNativeMethodsクラスがあります。
あなたが言及していない他の主要な相互運用方法はCOM相互運用です。これがフレームワーク内でどれほど広く使用されているかはわかりませんが、WMI(System.Management)のものの中には、かなり頻繁に使用されているものと、もちろんWinFormsActiveXサポートが使用されているものがあると思います。