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); }
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); }
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); }