[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 接口。