c # — CA2101 Предупреждение при совершении внешних звонков

Я использую библиотеки 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Я разрешаю предупреждение анализа кода, но моя функция больше не работает. Как я могу устранить предупреждение и сохранить мой код в рабочем состоянии?

4

Решение

Это предупреждение возникает из-за того, что усечение текста Unicode до строки ASCII может вызвать проблемы с безопасностью.

Если вы не можете использовать строки Unicode, установите BestFitMapping = false, ThrowOnUnmappableChar = true на атрибуте, чтобы предотвратить эту проблему безопасности.
Для получения дополнительной информации см. документация.

9

Другие решения

Других решений пока нет …