using System.Runtime.InteropServices;
[DllImport( KERNEL32.DLL,
EntryPoint=MoveFileW,
SetLastError=true,
CharSet=CharSet.Unicode,
ExactSpelling=true,
CallingConvention=CallingConvention.StdCall
)
]
public static extern bool MoveFile(String src, String dst);
参数说明:
EntryPoint 指定要调用的 DLL 入口点。
SetLastError 判断在执行该方法时是否出错(使用 Marshal.GetLastWin32Error API 函数来确定)。
C#中默认值为 false。
CharSet 控制名称及函数中字符串参数的编码方式。默认值为 CharSet.Ansi。
ExactSpelling 是否修改入口点以对应不同的字符编码方式。
CallingConvention 指定用于传递方法参数的调用约定。默认值为 WinAPI。
该值对应于基于32位Intel平台的 __stdcall。
BestFitMapping 是否启用最佳映射功能,默认为 true。
最佳映射功能提供在没有匹配项时,自动提供匹配的字符。
无法映射的字符通常转换为默认的“?”。
PreserveSig 托管方法签名是否转换成返回 HRESULT,默认值为 true(不应转换签名)。
并且返回值有一个附加的 [out, retval] 参数的非托管签名。
ThrowOnUnmappableChar 控制对转换为 ANSI ? 字符的不可映射的 Unicode 字符引发异常。
IntPtr 类型的说明
对于平台调用,应让参数为 IntPtr 类型,而不是 String 类型。使用 System.Runtime.InteropServices.Marshal 类所提供的方法,可将类型手动转换为字符串并手动将其释放。
IntPtr 类型被设计成整数,其大小适用于特定平台。
在 32 位硬件和操作系统中将是 32 位;
在 64 位硬件和操作系统中将是 64 位。
IntPtr 类型由支持指针的语言使用,并作为在支持与不支持指针的语言间引用数据的一种通用方式。它也可用于保持句柄。例如,IntPtr 的实例广泛地用在 System.IO.FileStream 类中来保持文件句柄。
IntPtr 类型符合 CLS,而 UIntPtr 类型却不符合。只有 IntPtr 类型可用在公共语言运行库中。此类型实现 ISerializable 接口。
温馨提示:答案为网友推荐,仅供参考