Я использую библиотеки 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);
Если я изменю CharSet
в CharSet.Unicode
Я разрешаю предупреждение анализа кода, но моя функция больше не работает. Как я могу устранить предупреждение и сохранить мой код в рабочем состоянии?
Это предупреждение возникает из-за того, что усечение текста Unicode до строки ASCII может вызвать проблемы с безопасностью.
Если вы не можете использовать строки Unicode, установите BestFitMapping = false, ThrowOnUnmappableChar = true
на атрибуте, чтобы предотвратить эту проблему безопасности.
Для получения дополнительной информации см. документация.
Других решений пока нет …