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 に答える