Exemple #1
0
        internal static IntPtr CreateCachedUTF8String(string str, out UIntPtr size)
        {
            NtStringWrite ntStr = s_keyCache.GetOrAdd(str, s => new NtStringWrite(s));

            size = ntStr.len;
            return(ntStr.str);
        }
Exemple #2
0
        internal static bool SetEntryStringArray(string name, string[] value, bool force = false)
        {
            UIntPtr size;
            IntPtr  namePtr = CreateCachedUTF8String(name, out size);

            NtStringWrite[] ntStrings = new NtStringWrite[value.Length];
            for (int i = 0; i < value.Length; i++)
            {
                ntStrings[i] = new NtStringWrite(value[i]);
            }

            int retVal = Interop.NT_SetEntryStringArray(namePtr, size, ntStrings, (UIntPtr)ntStrings.Length, force ? 1 : 0);

            foreach (var ntString in ntStrings)
            {
                ntString.Dispose();
            }

            return(retVal != 0);
        }