DllImportAttribute.ThrowOnUnmappableChar Поле

Определение

Включает и отключает возникновение исключений для неотображаемых символов Юникода, преобразующихся в знаки вопроса ("?") ANSI.Enables or disables the throwing of an exception on an unmappable Unicode character that is converted to an ANSI "?" character.

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

Значение поля

Boolean

Примеры

В некоторых случаях Visual Basic разработчики используют DllImportAttribute для определения функции DLL в управляемом коде вместо использования Declare инструкции.In some cases, Visual Basic developers use the DllImportAttribute to define a DLL function in managed code, instead of using the Declare statement. Установка ThrowOnUnmappableChar поля является одним из этих вариантов.Setting the ThrowOnUnmappableChar field is one of those cases. В следующем примере показано, как применить стандартную защиту сопоставления символов к определениям метода вызова неуправляемого кода, указав кодировку ANSI, отключив наилучшее поведение сопоставления и вызывая исключение для несопоставленных символов Юникода.The following example shows how to apply the strictest character mapping security to a platform invoke method definitions by specifying the ANSI character set, disabling best fit mapping behavior, and throwing an exception on unmapped Unicode characters.

[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 поле отключено.true to indicate that an exception is thrown each time the interop marshaler converts an unmappable character; false to indicate that the ThrowOnUnmappableChar field is disabled. falseПо умолчанию это поле имеет значение.This field is false by default.

Внимание!

Некоторые символы Юникода преобразуются в небезопасные символы, например символ обратной косой черты " \ ", который может случайно изменить путь.Certain Unicode characters are converted to dangerous characters, such as the backslash '\' character, which can inadvertently change a path. Установив ThrowOnUnmappableChar для поля значение true , можно передать вызывающему объекту сигнал о присутствии несопоставимого символа, вызывая исключение.By setting the ThrowOnUnmappableChar field to true, you can signal the presence of an unmappable character to the caller by throwing an exception.

Внимание!

Нельзя изменить значения по умолчанию, предоставляемые BestFitMapping ThrowOnUnmappableChar полями и при передаче управляемого массива, элементы которого являются символами ANSI или лпстрс, в неуправляемый безэлементный массив.You cannot change the default values provided by the BestFitMapping and ThrowOnUnmappableChar fields when passing a managed array whose elements are ANSI Chars or LPSTRs to an unmanaged safe array. Наилучшее сопоставление всегда включено, и исключение не создается.Best-fit mapping is always enabled and no exception is thrown. Имейте в виду, что это сочетание может нарушить вашу модель безопасности.Be aware that this combination can compromise your security model.

Применяется к

См. также раздел