/// <summary> /// Parse FlatUIDArray_r structure. /// </summary> /// <param name="ptr">A pointer points to memory allocated.</param> /// <returns>Instance of FlatUIDArray_r structure.</returns> public static FlatUIDArray_r ParseFlatUIDArray_r(IntPtr ptr) { FlatUIDArray_r fuida_r = new FlatUIDArray_r { Values = (uint)Marshal.ReadInt32(ptr) }; if (fuida_r.Values == 0) { fuida_r.Guid = null; } else { fuida_r.Guid = new FlatUID_r[fuida_r.Values]; IntPtr fuidaddr = new IntPtr(Marshal.ReadInt32(ptr, sizeof(uint))); for (uint i = 0; i < fuida_r.Values; i++) { fuida_r.Guid[i] = ParseFlatUID_r(new IntPtr(Marshal.ReadInt32(fuidaddr))); fuidaddr = new IntPtr(fuidaddr.ToInt32() + 4); } } return(fuida_r); }
/// <summary> /// Parse FlatUIDArray_r structure. /// </summary> /// <param name="ptr">A pointer points to the allocated memory.</param> /// <returns>Instance of FlatUIDArray_r structure.</returns> public static FlatUIDArray_r ParseFlatUIDArray_r(IntPtr ptr) { FlatUIDArray_r fuida_r = new FlatUIDArray_r { CValues = (uint)Marshal.ReadInt32(ptr) }; if (fuida_r.CValues == 0) { fuida_r.Lpguid = null; } else { fuida_r.Lpguid = new FlatUID_r[fuida_r.CValues]; IntPtr fuidaddr = new IntPtr(Marshal.ReadInt32(ptr, sizeof(uint))); for (uint i = 0; i < fuida_r.CValues; i++) { fuida_r.Lpguid[i] = ParseFlatUID_r(new IntPtr(Marshal.ReadInt32(fuidaddr))); fuidaddr = new IntPtr(fuidaddr.ToInt32() + 4); } } return fuida_r; }