Export (0) Print
Expand All

4.2 Modifying an Entry in the Permissions List

In this example, the client is modifying the entry for "user8" in the permissions list on the Calendar folder. First, the client retrieves the permissions list by sending the same RopGetPermissionsTable ([MS-OXCROPS] section 2.2.10.2), RopSetColumns ([MS-OXCROPS] section 2.2.5.1), and RopQueryRows ([MS-OXCROPS] section 2.2.5.4) ROP requests as in the example in section 4.1. The server returns the following three ROP response buffers with the current permissions list contained in the RowData field of the RopQueryRows ROP response buffer.

The RopGetPermissionsTable ROP response buffer contains the following data (6 bytes).

0000: 3E 01 00 00 00 00

RopId: 0x3E

OutputHandleIndex: 1 (HSOT=0x000000CA)

ReturnValue: 0x00000000 (success)

The RopSetColumns ROP response buffer contains the following data (7 bytes).

0000: 12 01 00 00 00 00 00

RopId: 0x12

InputHandleIndex: 1 (HSOT=0x000000CA)

ReturnValue: 0x00000000 (success)

TableStatus: 0x00 (TBLSTAT_COMPLETE flag is set)

The RopQueryRows ROP response buffer contains the following data (212 bytes).

0000: 15 01 00 00 00 00 02 03-00 00 00 00 00 00 00 00 ................
0010: 00 00 00 00 00 08 00 00-00 00 00 02 00 00 00 15 ................
0020: 00 00 00 75 00 73 00 65-00 72 00 38 00 00 00 FB ...u.s.e.r.8....
0030: 1F 00 00 7C 00 00 00 00-00 DC A7 40 C8 C0 42 10 ...|.......@..B.
0040: 1A B4 B9 08 00 2B 2F E1-82 01 00 00 00 00 00 00 .....+/.........
0050: 00 2F 4F 3D 46 49 52 53-54 20 4F 52 47 41 4E 49 ./O=FIRST ORGANI
0060: 5A 41 54 49 4F 4E 2F 4F-55 3D 45 58 43 48 41 4E ZATION/OU=EXCHAN
0070: 47 45 20 41 44 4D 49 4E-49 53 54 52 41 54 49 56 GE ADMINISTRATIV
0080: 45 20 47 52 4F 55 50 20-28 46 59 44 49 42 4F 48 E GROUP (FYDIBOH
0090: 46 32 33 53 50 44 4C 54-29 2F 43 4E 3D 52 45 43 F23SPDLT)/CN=REC
00A0: 49 50 49 45 4E 54 53 2F-43 4E 3D 55 53 45 52 38 IPIENTS/CN=USER8
00B0: 00 00 FF FF FF FF FF FF-FF FF 41 00 6E 00 6F 00 ..........A.n.o.
00C0: 6E 00 79 00 6D 00 6F 00-75 00 73 00 00 00 00 00 n.y.m.o.u.s.....
00D0: 00 00 00 00                                     ....

RopId: 0x15

InputHandleIndex: 1 (HSOT=0x000000CA)

ReturnValue: 0x00000000 (success)

Origin: 0x02 (BOOKMARK_END flag is set)

RowCount: 0x0003 (three PropertyRow structures in the RowData field)

RowData:

PropertyRow structure #1 (beginning at address 0x0009 in the RopQueryRows ROP response buffer):

Flag: 0x00 (no errors)

ValueArray:

0x0000000000000000 (default user)

0x0000 (Unicode null)

0x00000800 (FreeBusySimple flag is set)

0x0000 (byte count is zero bytes, indicating that no PermanentEntryID structure ([MS-OXNSPI] section 2.2.9.3) is present)

PropertyRow structure #2 (beginning at address 0x001A in the RopQueryRows ROP response buffer):

Flag: 0x00 (no errors)

ValueArray:

0x0000001500000002

"user8"

0x00001FFB (FreeBusyDetailed, FreeBusySimple, FolderVisible, FolderContact, FolderOwner, CreateSubFolder, DeleteAny, EditAny, DeleteOwned, EditOwned, Create, and ReadAny flags are set)

The last value in the ValueArray field is the value of the PidTagEntryId property (section 2.2.4). The value begins with the byte count, 0x007C (124), at address 0x0033 in the RopQueryRows ROP response buffer, followed by the 124-byte PermanentEntryID structure.

PropertyRow structure #3 (beginning at address 0x00B1 in the RopQueryRows ROP response buffer):

Flag: 0x00 (no errors)

ValueArray:

0xFFFFFFFFFFFFFFFF (anonymous user)

"Anonymous"

0x00000000 (no permissions flags are set)

0x0000 (byte count is zero bytes, indicating that no PermanentEntryID structure is present)

The permissions list on this folder now has an entry for "user8", which the client added as shown in the example in section 4.1. The client changes the permissions for "user8" from 0x00001FFB to 0x00001800 (FreeBusyDetailed and FreeBusySimple flags) by sending the following RopModifyPermissions request ([MS-OXCROPS] section 2.2.10.1) with the PermissionsData field containing the entry to be modified.

The RopModifyPermissionsROP request buffer contains the following data (29 bytes).

0000: 40 00 00 02 01 00 02 02-00 14 00 71 66 02 00 00 @..........qf...
0010: 00 15 00 00 00 03 00 73-66 00 18 00 00          .......sf....

RopId: 0x40

LogonId: 0

InputHandleIndex: 0 (HSOT=0x000001DA)

ModifyFlags: 0x02 (IncludeFreeBusy flag is set)

ModifyCount: 0x0001 (one PermissionData structure in the PermissionsData field)

PermissionsData:

PermissionData structure (beginning at address 0x0006 in the RopModifyPermissions ROP request buffer):

PermissionDataFlags: 0x02 (ModifyRow flag is set)

PropertyValueCount: 0x0002 (two TaggedPropertyValue structures in the PropertyValues field)

PropertyValues:

TaggedPropertyValue structure #1 (beginning at address 0x0009 in the RopModifyPermissions ROP request buffer):

PropertyTag: 0x66710014 (PidTagMemberId property (section 2.2.5))

PropertyValue: 0x0000001500000002

TaggedPropertyValue structure #2 (beginning at address 0x0015 in the RopModifyPermissions ROP request buffer):

PropertyTag: 0x66730003 (PidTagMemberRights property (section 2.2.7))

PropertyValue: 0x00001800 (FreeBusyDetailed and FreeBusySimple flags are set)

The server returns the following ROP response buffer, which indicates that it successfully updated the permissions list for the folder.

The RopModifyPermissions ROP response buffer contains the following data (6 bytes).

0000: 40 00 00 00 00 00

RopId: 0x40

InputHandleIndex: 0 (HSOT=0x000001DA)

ReturnValue: 0x00000000 (success)

Show:
© 2014 Microsoft