2016-05-25 7 views
-3

Ich habe viel gegoogelt und konnte keine Lösung finden, also hier posten. Von Microsoft documentWie rufe ich die ReplaceFile-Funktion von C# auf?

BOOL WINAPI ReplaceFile(
     _In_  LPCTSTR lpReplacedFileName, 
     _In_  LPCTSTR lpReplacementFileName, 
     _In_opt_ LPCTSTR lpBackupFileName, 
     _In_  DWORD dwReplaceFlags, 
     _Reserved_ LPVOID lpExclude, 
     _Reserved_ LPVOID lpReserved 
    ); 

Ich brauche dies in C# die Grundstruktur ich jetzt umzusetzen.

[DllImport("kernel32", SetLastError = true)] 
    private static extern bool ReplaceFile(
     ///argument implemetation here 
    ); 

Aber ich weiß nicht, wie Sie die Argumente in C# implementieren. Ich habe viel gegoogelt, aber keine Lösung gefunden. Kann mir jemand dabei helfen?

Antwort

4

Nach den pinvoke.net Informationen über ReplaceFile, ist es das, was Sie brauchen:

[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)] 
static extern bool ReplaceFile(
    string   lpReplacedFileName, 
    string   lpReplacementFileName, 
    string   lpBackupFileName, 
    ReplaceFileFlags dwReplaceFlags, 
    IntPtr   lpExclude, 
    IntPtr   lpReserved); 

[Flags] 
enum ReplaceFileFlags : uint 
{ 
    REPLACEFILE_WRITE_THROUGH  = 0x00000001, 
    REPLACEFILE_IGNORE_MERGE_ERRORS = 0x00000002, 
    REPLACEFILE_IGNORE_ACL_ERRORS = 0x00000004, 
} 

Gerade IntPtr.Zero für die letzten zwei Parameter übergeben. Gemäß der SDK documentation werden sie nicht verwendet. Die gleiche Dokumentation erläutert den Zweck der anderen Parameter.

+0

@manu Haben Sie die Dokumentation gelesen? –

Verwandte Themen