private static CollumnInfo[] GetCollumnInfo(ShellFolder2 sf2)
        {
            List <CollumnInfo> retVal = new List <CollumnInfo>();
            uint i = 1;

            while (i < 500)
            {
                ShellDll.SHCOLSTATEF state;
                int hr = sf2.GetDefaultColumnState(i, out state);
                if (hr == -2147316575) //COMException, Out of Bounds
                {
                    break;
                }

                PropertyKey propKey;
                hr = sf2.MapColumnToSCID(i, out propKey);
                if (hr == -2147316575) //COMException, Out of Bounds
                {
                    break;
                }

                retVal.Add(new CollumnInfo()
                {
                    ColumnIndex = i, Flags = state, PropertyKey = propKey
                });

                i++;
            }
            return(retVal.ToArray());
        }
        private static CollumnInfo[] GetCollumnInfo(ShellFolder2 sf2)
        {
            List<CollumnInfo> retVal = new List<CollumnInfo>();
            uint i = 1;

            while (i < 500)
            {
                ShellDll.SHCOLSTATEF state;
                int hr = sf2.GetDefaultColumnState(i, out state);
                if (hr == -2147316575) //COMException, Out of Bounds
                    break;

                PropertyKey propKey;
                hr = sf2.MapColumnToSCID(i, out propKey);
                if (hr == -2147316575) //COMException, Out of Bounds
                    break;

                retVal.Add(new CollumnInfo() { ColumnIndex = i, Flags = state, PropertyKey = propKey });

                i++;
            }
            return retVal.ToArray();
        }