CA2101 拨打外部电话时出现警告

Posted

技术标签:

【中文标题】CA2101 拨打外部电话时出现警告【英文标题】:CA2101 Warning when making extern calls 【发布时间】:2012-11-13 22:20:38 【问题描述】:

我正在使用 WinPcap 库并设置了我的所有本机方法调用。在构建时,我收到CA2101: Specify marshaling for P/Invoke string arguments 代码分析警告。我的extern 函数是这样定义的:

[DllImport("wpcap", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
internal static extern int pcap_compile(IntPtr /* pcap_t* */ adaptHandle,
                                        IntPtr /*bpf_program **/fp,
                                        string /*char * */str,
                                        int optimize,
                                        uint netmask);

如果我将 CharSet 更改为 CharSet.Unicode,我会解决代码分析警告,但我的函数不再起作用。如何解决警告并保持我的代码正常工作?

【问题讨论】:

【参考方案1】:

出现此警告是因为将 Unicode 文本截断为 ASCII 字符串会导致安全问题。

如果您不能使用 Unicode 字符串,请在属性上设置 BestFitMapping = false, ThrowOnUnmappableChar = true 以防止出现此安全问题。 如需更多信息,请参阅documentation。

【讨论】:

以上是关于CA2101 拨打外部电话时出现警告的主要内容,如果未能解决你的问题,请参考以下文章

使用 memset 时出现“类型参数”警告

mex 编译时出现 GCC 版本警告

在 Playstore 中更新 apk 时出现警告消息

JS 数据表 |获取数据时出现未知警告

使用 SetIcon 时出现警告 C6387

警告:在 plsql 中创建包体时出现编译错误...