2014-01-08 36 views
5

我想從kernel32.dll導入一些函數,但我想使用不同的名稱。示例功能:函數的別名

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

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

包裝功能是我實際上不想要的,如果有另一種方式。

+0

你可以做到這一點,但它可能是一個壞主意。您的代碼的下一位讀者將如何知道這些功能是什麼? –

+1

有一些有效的情況。例如,許多Win32 API具有LPVOID/LPARAM/etc參數(例如SendMessage),它們可以根據其他參數採用不同的數據類型。在這種情況下,通常需要創建不同的方法簽名來支持不同的用例。在這種情況下,您必須使用EntryPoint重命名該函數(或者您可以在不同的類中聲明它們以避免名稱衝突,但這並不總是合適的)。 –

回答

10

使用DllImportAttribute的EntryPoint屬性。

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

謝謝你們兩位:)我嘗試了很多解決方案,但這很簡單-_- – Cubinator73

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