diff options
Diffstat (limited to 'src/System.Private.CoreLib/shared/System/Guid.Windows.cs')
-rw-r--r-- | src/System.Private.CoreLib/shared/System/Guid.Windows.cs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/System.Private.CoreLib/shared/System/Guid.Windows.cs b/src/System.Private.CoreLib/shared/System/Guid.Windows.cs new file mode 100644 index 000000000..6a275084f --- /dev/null +++ b/src/System.Private.CoreLib/shared/System/Guid.Windows.cs @@ -0,0 +1,29 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace System +{ + partial struct Guid + { + public static Guid NewGuid() + { + // CoCreateGuid should never return Guid.Empty, since it attempts to maintain some + // uniqueness guarantees. + + Guid g; + int hr = Interop.Ole32.CoCreateGuid(out g); + // We don't expect that this will ever throw an error, none are even documented, and so we don't want to pull + // in the HR to ComException mappings into the core library just for this so we will try a generic exception if + // we ever hit this condition. + if (hr != 0) + { + Exception ex = new Exception(); + ex.HResult = hr; + throw ex; + } + return g; + } + } +} + |