Platform SDK: Active Directory, ADSI, and Directory Services

ldap_add

The ldap_add function initiates an asynchronous add operation to a tree. For an add operation to succeed, the parent of the entry being added must already exist or the parent must be empty (equal to the distinguished name of the root).

ULONG ldap_add(
  LDAP* ld,
  PCHAR dn,
  LDAPMod* attrs[] 
);

Parameters

ld
[in] The session handle.
dn
[in] The distinguished name of the entry to add.
attrs
[in] An array of pointers to LDAPMod structures. Each structure specifies a single attribute.

Return Values

If the function succeeds, the return value is the message ID of the add operation.

If the function fails, it returns –1 and sets the session error parameters in the LDAP data structure.

Remarks

Before calling ldap_add, you must create an entry by specifying its attributes in LDAPMod structures. Set the mod_op member of each structure to LDAP_MOD_ADD, and set the mod_type and mod_vals members as appropriate for your entry.

As an asynchronous function, ldap_add returns a message ID for the operation. Call ldap_result with the message ID to get the result of the operation. To cancel an asynchronous add operation before it has been completed, call ldap_abandon.

If you prefer to have the results returned directly, use the synchronous function ldap_add_s. Use ldap_add_ext or ldap_add_ext_s if you need support for LDAP 3 server and client controls.

Multithreading: Calls to ldap_add are not thread-safe, because the function returns a message ID rather than the return code. In order to determine whether the call returned an error value, you have to retrieve the return code from the connection block. It is possible for another thread to overwrite the return code before you retrieve it. Use ldap_add_ext, or ldap_add_ext_s, both of which are thread-safe.

Note  When connecting to an LDAP 2 server, the application must perform a bind operation (by calling one of the ldap_bind or ldap_simple_bind routines) before attempting other operations.

Requirements

  Windows NT/2000: Requires Windows NT 4.0 SP4 or later.
  Windows 95/98: Requires Windows 95 or later. Available as a redistributable for Windows 95.
  Header: Declared in Winldap.h.
  Library: Use Wldap32.lib.
  Unicode: Declared as Unicode and ANSI prototypes.

See Also

Functions, ldap_abandon, ldap_add_ext or ldap_add_ext_s, ldap_add_s, ldap_bind, ldap_result, ldap_simple_bind, LDAP, LDAPMod, Modifying a Directory Entry, Synchronous vs. Asynchronous Calls