ベンダーの c# サンプル コードを PCI-Express デバイスとのインターフェイスに適応させようとしています。このコードは基本的に、大きなバッファーを int 配列として割り当て、fixed キーワードを介してピン留めしてから、ハードウェアに渡してデータを入力します。
これはうまく機能しますが、.Net は配列内の要素が最大 20 億に制限されているため、最終的には失敗します。Long の配列と gcAllowVeryLargeObjects キーワードを使用して制限を 16 GB に押し上げることができますが、最終的にはまだ .Net 制限に遭遇します。
アンマネージ コードでは、VirtualAlloc を呼び出して 40 GB または 50 GB を直接要求できますが、これが c# で可能かどうかは明確ではなく、適切なサンプル コードを見つけることができませんでした。別の言語でこれを行うことができることはわかっていますが、少なくとも Windows では .Net に精通しており、プログラムのこの比較的小さな部分を除けば、ハードウェア固有のコードはほとんどないので、私が持っているものに固執しようとします。