DllImportAttribute.BestFitMapping フィールド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Unicode 文字を ANSI 文字に変換するときの、最適マッピング動作のオン/オフを切り替えます。
public: bool BestFitMapping;
public bool BestFitMapping;
val mutable BestFitMapping : bool
Public BestFitMapping As Boolean
フィールド値
例
場合によっては、Visual Basic 開発者は、 ステートメントのDeclare
代わりに を使用DllImportAttributeして、マネージド コードで DLL 関数を定義します。 フィールドの BestFitMapping 設定は、その 1 つです。 次の例では、ANSI 文字セットを指定し、最適なマッピング動作を無効にし、マップされていない Unicode 文字に対して例外をスローすることで、プラットフォーム呼び出しメソッド定義に最も厳密な文字マッピング セキュリティを適用する方法を示します。
[DllImport("My.dll", CharSet = CharSet::Ansi,
BestFitMapping = false,
ThrowOnUnmappableChar = true)]
int SomeFuncion2(int parm);
[DllImport("My.dll", CharSet = CharSet.Ansi,
BestFitMapping = false,
ThrowOnUnmappableChar = true)]
internal static extern int SomeFuncion2(int parm);
<DllImport("My.dll", CharSet:=CharSet.Ansi,
BestFitMapping:=False,
ThrowOnUnmappableChar:=True)>
Friend Shared Function SomeFuncion2(parm As Integer) As Integer
End Function
注釈
の場合、最適マッピング動作が有効になっている場合 true
は、最適なマッピングが無効になります。 フィールドはBestFitMappingtrue
既定でです。 このフィールドの設定は、 属性のレベル設定 System.Runtime.InteropServices.BestFitMappingAttribute よりも優先されます。
注意事項
特定の Unicode 文字は、バックスラッシュ '\' 文字などの危険な文字に変換され、パスが誤って変更される可能性があります。 フィールドを ThrowOnUnmappableChar に true
設定すると、例外をスローすることで、マップできない文字の存在を呼び出し元に通知できます。
注意事項
要素が ANSI Chars または LPSTR であるマネージド配列をアンマネージド セーフ配列に渡すときに、 フィールドと ThrowOnUnmappableChar フィールドによってBestFitMapping提供される既定値を変更することはできません。 最適なマッピングは常に有効になっており、例外はスローされません。 この組み合わせにより、セキュリティ モデルが侵害される可能性があることに注意してください。
適用対象
こちらもご覧ください
.NET