Language

DllImportAttribute.ThrowOnUnmappableChar フィールド

定義

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

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

フィールド値

例

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

Caution

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

Caution

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

適用対象

こちらもご覧ください