1.14 Schema Extension Requests

The schema can be extended by adding new attributes and classes. New syntax definitions cannot be added. New attributes must be added before the attributes can be added to the class.

1.14.1 Attribute Definition Functions

The following table lists the functions that you can use to add or delete the attribute type definitions in the schema.

Function

Purpose

NWDSDefineAttr

Creates a new attribute type definition.

NWDSRemoveAttrDef

Deletes attribute type definitions. Attributes can be deleted only if they are not assigned to an object class and if they are not part of the operational schema.

Adding attributes is usually only the first step in the process of extending the schema. An attribute cannot be used by a class until it is added to the class when the class is first defined or if the class is already defined, when the class is modified.

Attributes cannot be deleted if they are used by a class definition.

For step-by-step instructions, see

1.14.2 Class Definition Functions

The following table lists the functions that you can use to add or modify the object class definitions in the schema.

Function

Purpose

NWDSDefineClass

Creates a new class.

NWDSModifyClassDef

Modifies an existing class.

NWDSRemoveClassDef

Deletes a class definition.

These functions are used in conjunction with other specialized functions. The input buffer, which will contain the information for the new class or a modification for an existing class, must be allocated and then initialized for the operation. (For the operation type, see Section 5.3, Buffer Operation Types and Related Functions.) The information must be placed in the buffer using specialized functions. Each information item is placed in the buffer separately. For example, to add three optional attributes to a new class definition, you would call NWDSPutClassItem once for each attribute. After all the information has been placed in the input buffer, you call the function that modifies or creates the class.

Your input buffer must be big enough to hold all the information to create a class or modify it.

For step-by-step instructions, see

For code samples, see