typedef LDAP * PLDAP; typedef PLDAP HLDAP; DWORD LdapOpen( WCHAR *domainName, int portno, HLDAP * phLdapHandle ); DWORD LdapBind( HLDAP hLdapHandle ); DWORD LdapSearchHelper( HLDAP hLdapHandle, WCHAR *base, int scope, WCHAR *filter, WCHAR *attrs[], int attrsonly, struct l_timeval *timeout, LDAPMessage **res ); DWORD LdapSearchS( HLDAP hLdapHandle, WCHAR *base, int scope, WCHAR *filter, WCHAR *attrs[], int attrsonly, LDAPMessage **res ); DWORD LdapSearchST( HLDAP hLdapHandle, WCHAR *base, int scope, WCHAR *filter, WCHAR *attrs[], int attrsonly, struct l_timeval *timeout, LDAPMessage **res ); DWORD CheckAndSetExtendedError( HLDAP hLdapHandle, int ldaperr ); DWORD LdapFirstEntry( HLDAP hLdapHandle, LDAPMessage *res, LDAPMessage **pfirst ); DWORD LdapGetValues( HLDAP hLdapHandle, LDAPMessage *entry, WCHAR *attr, WCHAR ***pvalues, int *pcount ); DWORD LdapGetValuesLen( HLDAP hLdapHandle, LDAPMessage *entry, WCHAR *attr, struct berval ***pvalues, int *pcount ); DWORD LdapNextEntry( HLDAP hLdapHandle, LDAPMessage *entry, LDAPMessage **pnext ); int LdapCountEntries( HLDAP hLdapHandle, LDAPMessage *res ); void LdapMsgFree( LDAPMessage *res ); void LdapValueFree( WCHAR **vals ); void LdapValueFreeLen( struct berval **vals ); DWORD LdapAddS( HLDAP hLdapHandle, WCHAR *dn, LDAPModW *attrs[] ); DWORD LdapModifyS( HLDAP hLdapHandle, WCHAR *dn, LDAPModW *mods[] ); DWORD LdapDeleteS( HLDAP hLdapHandle, WCHAR *dn );