ChangePropertySecurity
Changes the security of a bindery object’s property (For cross-platform functionality, see Developing NLMs with Cross-Platform Functions ( NDK: NLM Development Concepts, Tools, and Functions) and call NWChangePropertySecurity )
#include <\nlm\nit\nwbindry.h>
int ChangePropertySecurity (
char *objectName,
WORD objectType,
char *propertyName,
BYTE newPropertySecurity);
The objectName, objectType, and propertyName parameters must uniquely identify the property 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 15 characters long. Only printable characters can be used. Slashes, backslashes, colons, semicolons, commas, asterisks, and question marks are prohibited.
The newPropertySecurity 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 object, but only the supervisor can add a property to the object.
#include <stdio.h>
#include <\nlm\nit\nwbindry.h>
main()
{
int completionCode;
char objectName[48];
int objectType;
char propertyName[16];
BYTE newAccessFlags;
strcpy (objectName, "JDOE");
objectType = OT_USER;
strcpy (propertyName, "GROUP_MEMBERS");
newAccessFlags = 0x31;
completionCode =ChangePropertySecurity (objectName, objectType,
propertyName, newAccessFlags);
if (completionCode)
switch (completionCode)
{
case 150:
printf ("SERVER OUT OF MEMORY\n\n");
break;
case 240:
printf ("WILDCARD NOT ALLOWED\n\n");
break;
case 241:
printf ("INVALID BINDERY SECURITY\n\n");
break;
case 251:
printf ("NO SUCH PROPERTY\n\n");
break;
case 252:
printf ("NO SUCH OBJECT\n\n");
break;
case 254:
printf ("SERVER BINDERY LOCKED\n\n");
break;
case 255:
printf ("BINDERY FAILURE\n\n");
break;
case default:
printf ("completionCode=%d\n", completionCode);
break;
}
else
printf ("Access flags for %s is %2X\n",
propertyName,
newAccessFlags);
}