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