d、ExactSpelling 参数指示 EntryPoint
是否必须与指示的入口点的拼写完全匹配。如果未指定 ExactSpelling,则使用默认值 false。
e、PreserveSig
参数指示方法的签名应当被保留还是被转换。当签名被转换时,它被转换为一个具有 HRESULT 返回值和该返回值的一个名为 retval
的附加输出参数的签名。如果未指定 PreserveSig,则使用默认值 true。
f、SetLastError 参数指示方法是否保留
Win32"上一错误"。如果未指定 SetLastError,则使用默认值 false。
4、它是一次性属性类。
5、此外,用 DllImport 属性修饰的方法必须具有 extern 修饰符。
[ 转载 ] C# DllImport
用法和路径问题
Posted on2017-02-17 17:57且行且思 阅读(749) 评论(0)编辑 收藏
DllImport 是 System.Runtime.InteropServices 命名空间下的一个属性类,其功能是提供从非托管 DLL 导出的函数的必要调用信息。
DllImport 属性应用于方法,要求最少要提供包含入口点的 dll 的名称。
DllImport 的定义如下:
[AttributeUsage(AttributeTargets.Method)]
public class DllImportAttribute: System.Attribute
{
public DllImportAttribute(string dllName) {…} //定位参数为
dllName
public CallingConvention CallingConvention; //入口点调用约定
public CharSet CharSet; //入口点采用的字符接
public string EntryPoint; //入口点名称
public bool ExactSpelling; //是否必须与指示的入口点拼写完全一致,
默认 false
public bool PreserveSig; //方法的签名是被保留还是被转换
public bool SetLastError; //FindLastError 方法的返回值保存在这里
public string Value { get {…} }
}
用法示例:
[DllImport("kernel32")]
private static extern long WritePrivatePro<leString(string
section,string key,string val,string <lePath);