DllImportAttribute.ThrowOnUnmappableChar フィールド

定義

ANSI "?" 文字に変換される、適用できない Unicode 文字に対する例外のスローを有効または無効にします。

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

フィールド値

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

Caution

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

Caution

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

適用対象

こちらもご覧ください