2014-01-08 19 views
5

Ich möchte einige Funktionen von kernel32.dll importieren, aber ich möchte andere Namen verwenden. Beispielfunktion:Alias ​​für Funktion

[DllImport("kernel32.dll")] private static extern bool ReadProcessMemoryProc64 (...); 

private static bool BetterReadableAndWriteableName (...) { 
    ReadProcessMemoryProc64(...); 
} 

Einpacken der Funktion ist was ich eigentlich nicht will, wenn es anders geht.

+0

Sie können dies tun, aber es ist wahrscheinlich eine schlechte Idee. Wie wird der nächste Leser Ihres Codes wissen, was diese Funktionen sind? –

+1

Es gibt gültige Fälle. Zum Beispiel haben viele Win32-APIs LPVOID/LPARAM/etc-Parameter (z. B. SendMessage), die abhängig von anderen Parametern unterschiedliche Datentypen annehmen können. In diesem Fall müssen oft unterschiedliche Methodensignaturen erstellt werden, um verschiedene Anwendungsfälle zu unterstützen. In diesem Fall müssen Sie EntryPoint verwenden, um die Funktion umzubenennen (oder Sie könnten sie in verschiedenen Klassen deklarieren, um die Namenskollision zu vermeiden, aber das ist nicht immer angemessen). –

Antwort

10

Verwenden Sie die EntryPoint-Eigenschaft von DllImportAttribute.

[DllImport("kernel32.dll", EntryPoint="ReadProcessMemoryProc64")] 
private static extern bool BetterReadableAndWriteableName (...); 
+0

Vielen Dank beide :) Ich habe viele Lösungen versucht, aber das ist so einfach -_- – Cubinator73

4
[DllImport("kernel32.dll", EntryPoint = "ReadProcessMemoryProc64")] 
private static extern bool MyName(...);