有没有办法从kernel32大写调用“IsWow64Process
”函数?喜欢“ISWOW64PROCESS
”?或完全降低像“iswow64process
”?
如果没有,是否有任何黑客攻击来完成这项任务?谢谢!
答案 0 :(得分:3)
C#是区分大小写的语言,但您可以按照自己喜欢的方式定义pinvoke调用,只需要保持一致即可。您可以在PInvoke调用中映射EntryPoint,并将函数定义为全部大写,如下所示:
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi, EntryPoint = "IsWow64Process")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool ISWOW64PROCESS([In] IntPtr processHandle,
[Out, MarshalAs(UnmanagedType.Bool)] out bool wow64Process);
private void button1_Click_2(object sender, EventArgs e)
{
bool is64;
ISWOW64PROCESS(Process.GetCurrentProcess().Handle, out is64);
MessageBox.Show(is64.ToString());
}
答案 1 :(得分:1)
DllImportAttribute.EntryPoint字段允许您指定导入函数的真实名称。
直接来自该链接的示例是两行,显示如何重命名MessageBox函数:
[DllImport("user32.dll", CharSet = CharSet.Unicode, EntryPoint = "MessageBox")]
public static extern int MyNewMessageBoxMethod(IntPtr hWnd, String text, String caption, uint type);