CA2101进行外部呼叫时发出警告

lum*_*ck4 4 c# c++ code-analysis visual-studio

我正在使用WinPcap库并设置了所有本机方法调用.在构建时,我获得CA2101:为P/Invoke字符串参数指定编组代码分析警告.我的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);
Run Code Online (Sandbox Code Playgroud)

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

SLa*_*aks 10

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

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