DllImportAttribute.ThrowOnUnmappableChar フィールド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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 相互運用マーシャラーがマップできない文字を変換するたびに例外がスローされることを示す場合。 false 、 ThrowOnUnmappableChar フィールドが無効になっていることを示します。 このフィールドは既定で false 。
Caution
特定の Unicode 文字は、バックスラッシュ '\' 文字などの危険な文字に変換され、パスが誤って変更される可能性があります。
ThrowOnUnmappableChar フィールドを true に設定すると、例外をスローすることで、マップできない文字の存在を呼び出し元に通知できます。
Caution
ANSI Chars または LPSTR の要素を持つマネージド配列をアンマネージド セーフ配列に渡す場合、 BestFitMapping フィールドと ThrowOnUnmappableChar フィールドによって提供される既定値を変更することはできません。 最適なマッピングは常に有効になっており、例外はスローされません。 この組み合わせによってセキュリティ モデルが損なわれる可能性があることに注意してください。