次の方法で共有


DllImportAttribute.BestFitMapping フィールド

定義

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 文字は、バックスラッシュ '\' 文字などの危険な文字に変換され、パスが誤って変更される可能性があります。 フィールドを ThrowOnUnmappableChartrue設定すると、例外をスローすることで、マップできない文字の存在を呼び出し元に通知できます。

注意事項

要素が ANSI Chars または LPSTR であるマネージド配列をアンマネージド セーフ配列に渡すときに、 フィールドと ThrowOnUnmappableChar フィールドによってBestFitMapping提供される既定値を変更することはできません。 最適なマッピングは常に有効になっており、例外はスローされません。 この組み合わせにより、セキュリティ モデルが侵害される可能性があることに注意してください。

適用対象

こちらもご覧ください