【问题标题】:Alias for function函数的别名
【发布时间】:2014-01-08 19:40:23
【问题描述】:

我想从 kernel32.dll 中导入一些函数,但我想使用不同的名称。示例函数:

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

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

如果有其他方法,我实际上不想要包装函数。

【问题讨论】:

  • 您可以这样做,但这可能是个坏主意。您的代码的下一位读者将如何知道这些函数是什么?
  • 有有效案例。例如,许多 Win32 API 具有 LPVOID/LPARAM/等参数(例如 SendMessage),这些参数可以根据其他参数采用不同的数据类型。在这种情况下,通常需要创建不同的方法签名来支持不同的用例。在这种情况下,您必须使用 EntryPoint 来重命名函数(或者您可以在不同的类中声明它们以避免名称冲突,但这并不总是合适的)。

标签: c# function winapi alias extern


【解决方案1】:

使用 DllImportAttribute 的 EntryPoint 属性。

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

【讨论】:

  • 谢谢两位 :) 我尝试了很多解决方案,但这很简单-_-
【解决方案2】:
[DllImport("kernel32.dll", EntryPoint = "ReadProcessMemoryProc64")] 
private static extern bool MyName(...);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-13
    • 2011-01-11
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多