示例#1
0
        //Override
        public List <LdapValue> getAttributeValues(string attributeName)
        {
            List <LdapValue> attributeValues  = new List <LdapValue>();
            IntPtr           attributePointer = IntPtr.Zero;
            int i = 0;

            try
            {
                attributePointer = LdapClientLibrary.ldap_get_values(this._message.GetConnection().GetIntPtr(), this._entry, attributeName);
                var count = LdapClientLibrary.ldap_count_values(attributePointer);
                while (i < count)
                {
                    var attributeValuePointer = Marshal.ReadIntPtr(attributePointer, System.Runtime.InteropServices.Marshal.SizeOf(attributePointer) * i);
                    var attributeValue        = new LdapValue(Marshal.PtrToStringAnsi(attributeValuePointer));
                    attributeValues.Add(attributeValue);
                    i++;
                }
                return(attributeValues);
            }
            finally
            {
                LdapClientLibrary.ldap_value_free(attributePointer);
            }
        }