public int Ldap_Search_Ext_S( string basedn, int scope, string filter, string[] attrs, int attrsonly, //LDAPControl[] ServerControls, IntPtr[] ServerControls, IntPtr[] ClientControls, LdapTimeVal timeout, int SizeLimit, out LdapMessage ldapMessage ) { IntPtr umldapMessage = new IntPtr(); // IntPtr[] umServerControls = null; //IntPtr umClientControls = IntPtr.Zero; IntPtr umtimeout = IntPtr.Zero; /* if (ServerControls != null && ServerControls.Length > 0) { umServerControls = new IntPtr[ServerControls.Length]; for (int i = 0; i < ServerControls.Length; i++) { umServerControls[i] = ServerControls[i].ConvertToUM(); } }*/ //if (ClientControls != null && ClientControls.Length > 0) //{ // umClientControls = new IntPtr[ClientControls.Length]; // for (int i = 0; i < ClientControls.Length; i++) // { // umClientControls[i] = ClientControls[i].ConvertToUM(); // } //} if (timeout != null) umtimeout = timeout.ConvertToUM(); int ret = -1; ldapMessage = null; Monitor.Enter(Ldap_ApiCallSync); try { Logger.Log(String.Format("Calling Ldap_Search_Ext_S(basedn={0}, scope={1}, filter={2})", basedn, scope, filter), Logger.ldapLogLevel); /* int ret = LdapApi.ldap_search_ext_s( _ld, basedn, scope, filter, attrs, attrsonly, umServerControls, umClientControls, umtimeout, SizeLimit, out umldapMessage);*/ unsafe { ret = Ldap_Rebind_S(); if (ret != 0) { Logger.Log(ErrorCodes.LDAPString(ret), Logger.ldapLogLevel); ldapMessage = null; return ret; } ret = LdapAPI.ldap_search_ext_s(_ld, basedn, scope, filter, attrs, 0, ServerControls, ClientControls, umtimeout, SizeLimit, out umldapMessage); } Logger.Log(String.Format("LdapHandle.Ldap_Search_Ext_S: ret={0}", ret), Logger.ldapLogLevel); if (ret != 0) { Logger.Log(ErrorCodes.LDAPString(ret), Logger.ldapLogLevel); } if (umldapMessage == IntPtr.Zero) { ldapMessage = null; return ret; } ldapMessage = new LdapMessage(this, umldapMessage); return ret; } catch (Exception ex) { Logger.LogException("LdapHandle.Ldap_Search_Ext_S", ex); return ret; } finally { Monitor.Exit(Ldap_ApiCallSync); } }
public int Ldap_Search_ST( string basedn, int scope, string filter, string[] attrs, int attrsonly, LdapTimeVal tv, out LdapMessage ldapMessage ) { DateTime beforeSearch = DateTime.Now; DateTime afterSearch = DateTime.Now; int ret = -1; ldapMessage = null; Monitor.Enter(Ldap_ApiCallSync); try { unsafe { IntPtr umldapMessage = new IntPtr(); IntPtr timeout = tv.ConvertToUM(); Logger.Log(String.Format("Calling Ldap_Search_ST(basedn={0}, scope={1}, filter={2})", basedn, scope, filter), Logger.ldapLogLevel); ret = Ldap_Rebind_S(); if (ret != 0) { Logger.Log(ErrorCodes.LDAPString(ret), Logger.ldapLogLevel); ldapMessage = null; return ret; } ret = LdapAPI.ldap_search_st(_ld, basedn, scope, filter, attrs, attrsonly, timeout, out umldapMessage); if (ret != 0) { Logger.Log(ErrorCodes.LDAPString(ret), Logger.ldapLogLevel); ldapMessage = null; return ret; } if (umldapMessage == IntPtr.Zero) { ldapMessage = null; return ret; } ldapMessage = new LdapMessage(this, umldapMessage); return ret; } } catch (Exception ex) { Logger.LogException("LdapHandle.Ldap_Search_ST", ex); return ret; } finally { afterSearch = DateTime.Now; Logger.Log(String.Format("Ldap_Search_ST complete. Time elapsed: {0}", afterSearch - beforeSearch), Logger.ldapLogLevel); Monitor.Exit(Ldap_ApiCallSync); } }