2014-01-08 9 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(...);