Ejemplo n.º 1
0
        public unsafe string GetRawInline()
        {
            string variable = Variable;

            if (variable == null)
            {
                throw new ArgumentNullException(nameof(variable));
            }

            Span <char>        stack  = stackalloc char[128];
            ValueStringBuilder buffer = new ValueStringBuilder(stack);

            uint returnValue;

            fixed(char *v = variable)
            {
                while (true)
                {
                    fixed(char *b = buffer)
                    {
                        if ((returnValue = Raw.GetEnvironmentVariableW(v, b, (uint)buffer.Capacity))
                            <= buffer.Capacity)
                        {
                            break;
                        }
                        else
                        {
                            buffer.EnsureCapacity((int)returnValue);
                        }
                    }
                }
                ;
            }

            if (returnValue == 0)
            {
                return(null);
            }

            buffer.Length = (int)returnValue;
            return(buffer.ToString());
        }