DllImportAttribute.ThrowOnUnmappableChar 字段
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
启用或禁用在遇到已被转换为 ANSI“?”字符的无法映射的 Unicode 字符时引发异常。
public: bool ThrowOnUnmappableChar;
public bool ThrowOnUnmappableChar;
val mutable ThrowOnUnmappableChar : bool
Public ThrowOnUnmappableChar As Boolean
字段值
示例
在某些情况下,Visual Basic 开发人员使用 DllImportAttribute 在托管代码中定义 DLL 函数,而不是使用 Declare
语句。 设置 ThrowOnUnmappableChar 字段便是这其中的一种情况。 下面的示例演示如何通过以下方法将最严格的字符映射安全应用到平台调用方法定义: 指定 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 字符会转换为危险字符,例如反斜杠“\”字符,这可能会无意中更改路径。 通过将 字段设置为 ThrowOnUnmappableChartrue
,可以通过引发异常向调用方发出无法应用字符的信号。
注意
将元素为 ANSI Chars 或 LPSTR 的托管数组传递到非托管安全数组时,不能更改 和 ThrowOnUnmappableChar 字段提供的BestFitMapping默认值。 始终启用最佳匹配映射,并且不会引发异常。 请注意,此组合可能会危及安全模型。