C# C语言中的DLL外部函数声明#
我正试图从C#.NET 2.0应用程序访问kernel32.dll中的C# C语言中的DLL外部函数声明#,c#,dll,C#,Dll,我正试图从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 lpPro
GetProcAddress
函数。MSDN站点将其C原型显示为
FARPROC WINAPI GetProcAddress(
__in HMODULE hModule,
__in LPCSTR lpProcName
);
如何将其转换为C#?我想我已经得到了大部分:
private static extern delegate GetProcAddress(IntPtr hModule, string lpProcName);
然而,我认为使用
delegate
关键字是错误的。我应该更改什么,以便可以从应用程序访问此功能?谢谢。PInvoke.Net提供了一个很好的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
文章链接