[DllImport(nameof(Kernel32), SetLastError=true)]
public static extern uint SizeofResource(IntPtr hModule,
IntPtr hResInfo);
+
+ public const int ERROR_CALL_NOT_IMPLEMENTED = 0x78;
}
/// <summary>
{
// On Nano Server 1709+, `BeginUpdateResource` is exported but returns a null handle with a zero error
// Try to call `BeginUpdateResource` with an invalid parameter; the error should be non-zero if supported
+ // On Nano Server 20213, `BeginUpdateResource` fails with ERROR_CALL_NOT_IMPLEMENTED
using (var handle = Kernel32.BeginUpdateResource("", false))
{
- if (handle.IsInvalid && Marshal.GetLastWin32Error() == 0)
+ int lastWin32Error = Marshal.GetLastWin32Error();
+
+ if ((handle.IsInvalid && lastWin32Error == 0) ||
+ lastWin32Error == Kernel32.ERROR_CALL_NOT_IMPLEMENTED)
{
return false;
}