public static unsafe int GetPrincipalNameImpl(PrincipalHandle handle,
                                                      /*[out]*/ char *outName, int outNameLength)
        {
            Principal p    = PrincipalImpl.MakePrincipal(handle.val);
            string    name = p.GetName();

            if (name.Length > outNameLength)
            {
                return(-name.Length);
            }
            return(name.InternalGetChars(outName, outNameLength));
        }
示例#2
0
        public static unsafe string GetPrincipalName(PrincipalHandle handle)
        {
            int size = DefaultPrincipalSize;

            for (;;)
            {
                char[] name = new char[size];
                fixed(char *namePtr = &name[0])
                {
                    int len = GetPrincipalNameImpl(handle, namePtr, size);

                    if (len >= 0)
                    {
                        return(String.StringCTOR(name, 0, len));
                    }
                    size = -len;
                }
            }
        }
示例#3
0
 private static extern unsafe int GetPrincipalNameImpl(PrincipalHandle handle,
                                                       /*[out]*/ char *outName, int outNameLength);