public static PropertyValue_r ParsePropertyValue_r(IntPtr ptr)
{
PropertyValue_r protertyValue = new PropertyValue_r();
int offset = 0;
protertyValue.PropTag = (uint)Marshal.ReadInt32(ptr, offset);
offset += sizeof(uint);
protertyValue.Reserved = (uint)Marshal.ReadInt32(ptr, offset);
offset += sizeof(uint);
IntPtr newPtr = new IntPtr(ptr.ToInt32() + offset);
protertyValue.Value = ParsePROP_VAL_UNION(newPtr, (PropertyTypeValue)(protertyValue.PropTag & 0x0000FFFF));
return protertyValue;
}