最近、セカンダリ ライブラリ/バイナリ モジュールのリソースを操作していて、奇妙なエラーが発生しました。
2 つのネイティブ 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:\Software\Reflector\Reflector.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
これは通常、私の知る限り、不明なエラーがあることを意味しますが、ちょっと興味があります - 実行可能ファイルからリソースを一覧表示する際の問題は何でしょうか?