2016-05-25 2 views
-3

У меня много интересного об этом и не найдено ни одного решения, поэтому отправляйте сюда. от Microsoft documentКак мне вызвать функцию ReplaceFile с C#?

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

Мне нужно реализовать это в C# сейчас основная структура.

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

Но я не знаю, как реализовать аргументы в C#. Я много гугли, но не получил решения. Может ли кто-нибудь помочь мне в этом?

ответ

4

Согласовывающ pinvoke.net информация о ReplaceFile, это то, что вам нужно:

[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, 
} 

Просто пройти IntPtr.Zero в течение последних двух параметров. Согласно SDK documentation, они не используются. В той же документации объясняются цели других параметров.

+0

@manu Вы прочитали документацию? –