DllImport を使用して関数をインポートする場合、使用する CharSet を指定できます。C#、C++、および Visual Basic では、.Net ランタイムがデフォルトで Unicode ではなく Ansi を使用することに気付きました。したがって、A バージョンと W バージョンを持つシステム コールでは、デフォルトで A バージョンが呼び出されます。.Net は内部で Unicode を使用しており、間違っていなければ新しいバージョンの Windows もすべてを Unicode に変換するため、マーシャリングのオーバーヘッドが大幅に増加します。
私は常にここでユニコードを指定する習慣に陥っていますが、これは正しい方法ですか、それとも問題を引き起こしますか?