public static unsafe IntPtr[] ReadIntPtrArray(IPropertyContainer propertyContainer, UInt32 key)
        {
            var size        = propertyContainer.GetPropertySize(key);
            var numElements = (Int64)size / sizeof(IntPtr);
            var ptrs        = new IntPtr[numElements];
            var data        = InteropTools.ReadBytes(propertyContainer, key);

            fixed(Byte *pData = data)
            {
                var pBS = (void **)pData;

                for (var i = 0; i < numElements; i++)
                {
                    ptrs[i] = new IntPtr(pBS[i]);
                }
            }

            return(ptrs);
        }
Example #2
0
        unsafe public static IntPtr[] ReadIntPtrArray(IPropertyContainer propertyContainer, uint key)
        {
            IntPtr size        = propertyContainer.GetPropertySize(key);
            long   numElements = (long)size / sizeof(IntPtr);

            IntPtr[] ptrs = new IntPtr[numElements];
            byte[]   data = InteropTools.ReadBytes(propertyContainer, key);

            fixed(byte *pData = data)
            {
                void **pBS = (void **)pData;

                for (int i = 0; i < numElements; i++)
                {
                    ptrs[i] = new IntPtr(pBS[i]);
                }
            }

            return(ptrs);
        }
Example #3
0
        unsafe public static ulong[] ReadULongArray(IPropertyContainer propertyContainer, uint key)
        {
            IntPtr size        = propertyContainer.GetPropertySize(key);
            long   numElements = (long)size / sizeof(ulong);

            ulong[] ulongs = new ulong[numElements];
            byte[]  data   = InteropTools.ReadBytes(propertyContainer, key);

            fixed(byte *pData = data)
            {
                ulong *pBS = (ulong *)pData;

                for (int i = 0; i < numElements; i++)
                {
                    ulongs[i] = pBS[i];
                }
            }

            return(ulongs);
        }