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)); }
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; } } }
private static extern unsafe int GetPrincipalNameImpl(PrincipalHandle handle, /*[out]*/ char *outName, int outNameLength);