EnumResourceNames问题 - 未知错误
我最近使用二级库/二进制模块的资源,遇到了一个奇怪的错误。
我有两个本机WinAPI引用:
[DllImport("kernel32.dll", SetLastError = true)]
public extern static bool EnumResourceNames(IntPtr hModule, int lpszType, EnumResNameProc lpEnumFunc, IntPtr lParam);
[DllImport("kernel32.dll", SetLastError=true)]
public extern static IntPtr LoadLibraryEx(string lpFileName, IntPtr hFile, int dwFlags);
当我调用LoadLibraryEx时,我正在获取IntPtr实例 - 正是我需要的:
IntPtr x = WinApi.LoadLibraryEx(@"D:SoftwareReflectorReflector.exe",IntPtr.Zero,2);
Debug.WriteLine(x.ToInt32());
但是,当我尝试枚举图标资源(由ID = 3定义)时:
Debug.WriteLine(WinApi.EnumResourceNames(x, 3, new EnumResNameProc(ListCallback), IntPtr.Zero));
Debug.WriteLine(Marshal.GetLastWin32Error());
我收到此错误代码(由GetLastError返回):
-532462766
这通常意味着存在未知错误,据我所知,但我只是好奇 - 从可执行文件中列出资源可能会出现什么问题?
没有找到相关结果
已邀请:
2 个回复
浅镁
降女陷费券
。错误消息是: 作为String传入的指针不能位于进程地址空间的底部64K。 此异常被EnumResourceNames捕获并变为失败。正如Hans所示,解决方案是回调函数必须将第二个和第三个参数作为IntPtr而不是字符串。