2014-01-08 2 views
5

Я хочу импортировать некоторые функции из kernel32.dll, но я хочу использовать разные имена. Примерная функция:Псевдоним для функции

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

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

Обтекание функции - это то, что я на самом деле не хочу, если есть другой способ.

+0

Вы можете сделать это, но это, вероятно, плохая идея. Как следующий читатель вашего кода узнает, что это за функции? –

+1

Имеются действительные случаи. Например, многие API Win32 имеют параметры LPVOID/LPARAM/etc (например, SendMessage), которые могут принимать разные типы данных в зависимости от других параметров. В этом случае часто необходимо создавать разные сигнатуры методов для поддержки различных вариантов использования. В этом случае вы должны использовать EntryPoint для переименования функции (или вы можете объявить их в разных классах, чтобы избежать столкновения имен, но это не всегда подходит). –

ответ

10

Используйте свойство EntryPoint свойства DllImportAttribute.

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

Спасибо вам оба :) Я попробовал много решений, но это так просто -_- – Cubinator73

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