Win32Error.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using System;
  2. using System.Diagnostics.CodeAnalysis;
  3. using System.Runtime.InteropServices;
  4. namespace Standard;
  5. [StructLayout(LayoutKind.Explicit)]
  6. internal struct Win32Error
  7. {
  8. public Win32Error(int i)
  9. {
  10. this._value = i;
  11. }
  12. public static explicit operator HRESULT(Win32Error error)
  13. {
  14. if (error._value <= 0)
  15. {
  16. return new HRESULT((uint) error._value);
  17. }
  18. return HRESULT.Make(true, Facility.Win32, error._value & 65535);
  19. }
  20. public HRESULT ToHRESULT()
  21. {
  22. return (HRESULT) this;
  23. }
  24. [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")]
  25. public static Win32Error GetLastError()
  26. {
  27. return new Win32Error(Marshal.GetLastWin32Error());
  28. }
  29. public override bool Equals(object obj)
  30. {
  31. bool result;
  32. try
  33. {
  34. result = (((Win32Error) obj)._value == this._value);
  35. }
  36. catch (InvalidCastException)
  37. {
  38. result = false;
  39. }
  40. return result;
  41. }
  42. public override int GetHashCode()
  43. {
  44. return this._value.GetHashCode();
  45. }
  46. public static bool operator ==(Win32Error errLeft, Win32Error errRight)
  47. {
  48. return errLeft._value == errRight._value;
  49. }
  50. public static bool operator !=(Win32Error errLeft, Win32Error errRight)
  51. {
  52. return !(errLeft == errRight);
  53. }
  54. [FieldOffset(0)]
  55. private readonly int _value;
  56. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  57. public static readonly Win32Error ERROR_SUCCESS = new Win32Error(0);
  58. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  59. public static readonly Win32Error ERROR_INVALID_FUNCTION = new Win32Error(1);
  60. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  61. public static readonly Win32Error ERROR_FILE_NOT_FOUND = new Win32Error(2);
  62. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  63. public static readonly Win32Error ERROR_PATH_NOT_FOUND = new Win32Error(3);
  64. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  65. public static readonly Win32Error ERROR_TOO_MANY_OPEN_FILES = new Win32Error(4);
  66. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  67. public static readonly Win32Error ERROR_ACCESS_DENIED = new Win32Error(5);
  68. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  69. public static readonly Win32Error ERROR_INVALID_HANDLE = new Win32Error(6);
  70. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  71. public static readonly Win32Error ERROR_OUTOFMEMORY = new Win32Error(14);
  72. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  73. public static readonly Win32Error ERROR_NO_MORE_FILES = new Win32Error(18);
  74. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  75. public static readonly Win32Error ERROR_SHARING_VIOLATION = new Win32Error(32);
  76. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  77. public static readonly Win32Error ERROR_INVALID_PARAMETER = new Win32Error(87);
  78. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  79. public static readonly Win32Error ERROR_INSUFFICIENT_BUFFER = new Win32Error(122);
  80. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  81. public static readonly Win32Error ERROR_NESTING_NOT_ALLOWED = new Win32Error(215);
  82. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  83. public static readonly Win32Error ERROR_KEY_DELETED = new Win32Error(1018);
  84. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  85. public static readonly Win32Error ERROR_NOT_FOUND = new Win32Error(1168);
  86. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  87. public static readonly Win32Error ERROR_NO_MATCH = new Win32Error(1169);
  88. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  89. public static readonly Win32Error ERROR_BAD_DEVICE = new Win32Error(1200);
  90. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  91. public static readonly Win32Error ERROR_CANCELLED = new Win32Error(1223);
  92. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  93. public static readonly Win32Error ERROR_CLASS_ALREADY_EXISTS = new Win32Error(1410);
  94. [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
  95. public static readonly Win32Error ERROR_INVALID_DATATYPE = new Win32Error(1804);
  96. }