CreateProperty

Creates a property for a bindery object (For cross-platform functionality, see Developing NLMs with Cross-Platform Functions ( NDK: NLM Development Concepts, Tools, and Functions) and call NWCreateProperty )

Local Servers:blocking
Remote Servers:blocking
Classification:3.x, 4.x, 5.x, 6.x
Service:Server-Based Bindery

Syntax

   #include <\nlm\nit\nwbindry.h>  
    
   int CreateProperty (  
      char   *objectName,  
      WORD   objectType,  
      char   *propertyName,  
      BYTE   propertyFlags,  
      BYTE   propertySecurity); 
   

Parameters

objectName
(IN) Specifies the string containing the name of the bindery object (maximum 48 characters, including the NULL terminator).
objectType
(IN) Specifies the type of the bindery object (OT_USER, OT_GROUP, OT_PRINT_SERVER, and so on).
propertyName
(IN) Specifies the string containing the name of the property to be created (maximum 16 characters, including the NULL terminator).
propertyFlags
(IN) Indicates whether the new property is Dynamic or Static and whether it is of type Item or Set: BF_DYNAMIC or BF_STATIC is logically ORed with BF_ITEM or BF_SET (BF_STATIC | BF_ITEM, and so on).
propertySecurity
(IN) Indicates the read/write access of others to the new property.

Return Values

0

(0x00)

ESUCCESS

150

(0x96)

ERR_SERVER_OUT_OF_MEMORY

237

(0xED)

ERR_PROPERTY_ALREADY_EXISTS

239

(0xEF)

ERR_INVALID_NAME

240

(0xF0)

ERR_WILDCARD_NOT_ALLOWED

241

(0xF1)

ERR_INVALID_BINDERY_SECURITY

247

(0xF7)

ERR_NO_PROPERTY_CREATE_PRIVILEGE

252

(0xFC)

ERR_NO_SUCH_OBJECT

254

(0xFE)

ERR_SERVER_BINDERY_LOCKED

255

(0xFF)

ERR_BINDERY_FAILURE

Remarks

The objectName and objectType parameters must uniquely identify the bindery object and must not contain wildcard characters. The objectName can be from 1 to 48 characters long, including the NULL terminator. The propertyName can be from 1 to 16 characters long, including the NULL terminator. Only printable characters can be used. Slashes, backslashes, colons, semicolons, commas, asterisks, and question marks are prohibited.

The propertyFlags parameter indicates whether the property is Dynamic or Static and whether it is of type Set or Item. A dynamic property is created and deleted frequently. Dynamic properties are deleted from the bindery when the server is initialized. Static properties remain in the bindery until deleted with DeleteProperty.

The property type indicates the type of data stored in the value of a property. The value of a Set property contains a series of bindery object IDs. Each object ID is 4 bytes long. The value of an Item property contains segments of 128-byte strings.

The propertySecurity parameter is actually two nibbles. The low-order nibble determines who can scan for and find the object. The high-order nibble determines who can add properties to the object. The following values are defined for each nibble:

0

0 0 0 0

Anyone

1

0 0 0 1

Logged

2

0 0 1 0

Object

3

0 0 1 1

Supervisor

4

0 1 0 0

NetWare Operating System

For example, 0x31 indicates that any user logged in to the server can find the property, but only the supervisor can add a value to the property.

The requesting workstation cannot create properties that have security greater than the workstation’s access to the bindery object. The password property can also be created with ChangeBinderyObjectPassword. CreateProperty can also be used to create the password property.

See Also

ChangeBinderyObjectPassword, DeleteProperty

CreateProperty Example

   #include <stdio.h>  
   #include <\nlm\nit\nwbindry.h>  
    
   main()  
   {  
      int   completionCode;  
      char  objectName[48];  
      char  propertyName[16];  
      WORD  objectType;  
      BYTE  propertyFlags;  
      BYTE  propertySecurity;  
    
      strcpy (objectName, "BRUTH");  
      objectType = OT_USER;  
      strcpy (propertyName, "BASEBALL_TEAM");  
      propertyFlags = BF_STATIC | BF_SET;  
      propertySecurity = 0x31;  
      completionCode = CreateProperty (objectName, objectType,  
         propertyName, propertyFlags, propertySecurity);  
      if (completionCode)  
         switch (completionCode)  
         {  
         case 150:  
         printf ("SERVER OUT OF MEMORY\n");  
         break; 
     
         case 237:  
         printf ("PROPERTY ALREADY EXISTS\n");  
         break;  
    
         case 239:  
         printf ("INVALID NAME\n");  
         break;  
    
         case 240:  
         printf ("WILDCARD NOT ALLOWED\n");  
         break;  
    
         case 241:  
         printf ("INVALID BINDERY SECURITY\n");  
         break;  
    
         case 247:  
         printf ("NO PROPERTY CREATE PRIVILEGE\n");  
         break;  
    
         case 252:  
         printf ("NO SUCH OBJECT\n");  
         break;  
    
         case 254:  
         printf ("SERVER BINDERY LOCKED\n");  
         break;  
    
         case 255:  
         printf ("BINDERY FAILURE\n");  
         break;  
    
         case default:  
         printf ("completionCode = %d\n", completionCode);  
         break;  
         }  
         else  
         printf ("SUCCESSFULLY created property %s\n",  
         propertyName);  
   }