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