我正在尝试从我的C#.NET 2.0应用程序访问kernel32.dll中的GetProcAddress
函数。 MSDN站点将其C原型显示为
FARPROC WINAPI GetProcAddress(
__in HMODULE hModule,
__in LPCSTR lpProcName
);
如何将其转换为C#?我想我已经掌握了大部分内容:
private static extern delegate GetProcAddress(IntPtr hModule, string lpProcName);
但是,我认为使用delegate
关键字是错误的。我应该更改什么,以便我可以从我的应用程序访问此功能?感谢。
答案 0 :(得分:2)
PInvoke.Net有一个很好的API API样本
internal static class UnsafeNativeMethods {
[DllImport("kernel32", CharSet=CharSet.Ansi, ExactSpelling=true, SetLastError=true)]
internal static extern IntPtr GetProcAddress(IntPtr hModule, string procName );
}
internal delegate int DllRegisterServerInvoker();
// code snippet in a method somewhere, error checking omitted
IntPtr fptr = UnsafeNativeMethods.GetProcAddress( hModule, "DllRegisterServer" );
DllRegisterServerInvoker drs = (DllRegisterServerInvoker) Marshal.GetDelegateForFunctionPointer( fptr, typeof(DllRegisterServerInvoker) );
drs(); // call via a function pointer
文章链接