The FlatUIDArray_r structure encodes an array of FlatUID_r data structures.
示例#1
0
        /// <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;
        }