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 拨打外部电话时出现警告的主要内容,如果未能解决你的问题,请参考以下文章