次の方法で共有


DllImportAttribute.ThrowOnUnmappableChar フィールド

定義

マップできない Unicode 文字 (ANSI の "?" に変換される文字) が見つかったときに、例外をスローするかどうかを指定します。

public: bool ThrowOnUnmappableChar;
public bool ThrowOnUnmappableChar;
val mutable ThrowOnUnmappableChar : bool
Public ThrowOnUnmappableChar As Boolean 

フィールド値

場合によっては、Visual Basic 開発者は、 ステートメントを使用する代わりに、 を使用 DllImportAttribute してマネージド コードで DLL 関数を Declare 定義します。 フィールドの ThrowOnUnmappableChar 設定は、その 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 相互運用マーシャラーがマップできない文字を変換するたびに例外がスローされることを示す場合。 false フィールドが ThrowOnUnmappableChar 無効になっていることを示す場合は 。 既定では、このフィールドが false になっています。

注意事項

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

注意事項

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

適用対象

こちらもご覧ください