运行代码分析时.net中的多个警告

时间:2015-03-05 04:02:39

标签: .net pinvoke

我正在VS中运行代码分析,并且来自2个不同p / invoke的大约130个警告几乎完全相同。它告诉我将一个字段(我在项目中没有任何地方)编组为unicode,这通常我可能会弄明白。问题是,我的项目中没有这65个字段中的任何一个。

<DllImport("kernel32.dll", SetlastError:=True)> _
Friend Shared Function WriteFile(ByVal hFile As IntPtr, ByVal Buffer As Byte(),
ByVal nNumberOfBytesToWrite As Integer, ByRef lpNumberOfBytesWritten As Integer,
ByVal lpOverlapped As Overlapped) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function

<DllImport("kernel32.dll", SetlastError:=True)> _
Friend Shared Function ReadFile(ByVal hFile As IntPtr, ByVal Buffer As Byte(), _
ByVal nNumberOfBytesToRead As Integer, ByRef lpNumberOfBytesRead As Integer, _
ByVal lpOverlapped As System.Threading.Overlapped) As Integer
End Function

以下是我收到的警告示例。

CA2101:Microsoft.Globalization:要降低安全风险,请将字段“ActivationArguments.m_appFullName”编组为Unicode,方法是将“ActivationArguments”上的StructLayout.CharSet设置为CharSet.Unicode,或者将字段显式封送为UnmanagedType.LPWStr。如果需要将此字符串封装为ANSI或依赖于系统,请明确指定MarshalAs,使用BestFitMapping属性关闭最佳拟合映射,并为了增加安全性,打开ThrowOnUnmappableChar。

0 个答案:

没有答案