7

我正在使用 WinPcap 库并设置了我所有的本机方法调用。在构建时,我得到CA2101: Specify marshaling for P/Invoke string arguments Code Analysis 警告。我的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);

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

4

1 回答 1

16

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

如果您不能使用 Unicode 字符串,BestFitMapping = false, ThrowOnUnmappableChar = true请在属性上设置以防止出现此安全问题。有关详细信息,请参阅文档

于 2012-11-13T22:24:35.287 回答