1

enum管理されたレイヤーから管理されていないレイヤーに渡される特定の問題があります-基本的にはenum配列を固定します。

私の使用例は、バッファを含む参照型 (T) の 1D 配列 (enumバイト単位の 2D 配列) を持っていることです。

バッファー (バイト単位の 2D 配列enum) がマネージド ヒープに割り当てられており、そのバッファーをアンマネージド レイヤーに渡して、いくつかの値で埋めたいと考えています。同時に、アンマネージ メソッドがバッファーにデータを入力しているときに、ガベージ コレクター (GC) がバッファーを移動しないようにしたいと考えています。そのためには、バッファを固定する必要があります。私がマネージ コードに使用している言語はC++/CLI,、バッファを固定する 2 つの方法を提供するものです。

  • cli::pin_ptr
  • GCHandle

何らかの理由で、使用してバッファをピン留めできませんGCHandle- 私が得るArgumentException- はenumblittable でないタイプである可能性があります。

cli::pin_ptrただし、バッファをピン留めすることはできますが、問題cli::pin_ptrは、議論中の参照型の配列 (バッファを含む - バイトに基づく列挙型の 2D 配列) が可変長になる可能性があるため、複数のpin_ptr(の配列pin_ptr)が必要になることです。各参照型インスタンスのピン バッファー。の配列を持つことはできませんcli::pin_ptr

これにより、.NET アプリケーションで特定の機能を実装することが妨げられています。2D 配列をenum正しく固定できないためです。

4

0 に答える 0