diff --git a/Core/Extensions/InteropExtensions.cs b/Core/Extensions/InteropExtensions.cs index aa5be9a4..7ae5ed79 100644 --- a/Core/Extensions/InteropExtensions.cs +++ b/Core/Extensions/InteropExtensions.cs @@ -236,7 +236,9 @@ namespace Vanara.Extensions { T ret = pCurrent.ToStructure(); yield return ret; - pCurrent = pCurrent.Offset(nextOffset(ret)); + var offset = nextOffset(ret); + if (offset == 0) break; + pCurrent = pCurrent.Offset(offset); } } diff --git a/PInvoke/Kernel32/WinBase.cs b/PInvoke/Kernel32/WinBase.cs index 3463068c..b3c03163 100644 --- a/PInvoke/Kernel32/WinBase.cs +++ b/PInvoke/Kernel32/WinBase.cs @@ -1775,7 +1775,7 @@ namespace Vanara.PInvoke // dwFlagsAndAttributes ); [DllImport(Lib.Kernel32, SetLastError = true, ExactSpelling = true)] [PInvokeData("winbase.h", MSDNShortId = "caa757a2-fc3f-4883-8d3e-b98d28f92517")] - public static extern IntPtr OpenFileById(HFILE hVolumeHint, in FILE_ID_DESCRIPTOR lpFileId, FileAccess dwDesiredAccess, FileShare dwShareMode, SECURITY_ATTRIBUTES lpSecurityAttributes, FileFlagsAndAttributes dwFlagsAndAttributes); + public static extern SafeHFILE OpenFileById(HFILE hVolumeHint, in FILE_ID_DESCRIPTOR lpFileId, FileAccess dwDesiredAccess, FileShare dwShareMode, SECURITY_ATTRIBUTES lpSecurityAttributes, FileFlagsAndAttributes dwFlagsAndAttributes); /// /// Decrements the count of power requests of the specified type for a power request object.