public uint AddPermission(FolderTypeEnum folderType, string permissionUserName, RequestBufferFlags requestBufferFlags, List<PermissionTypeEnum> permissionList)
{
if (permissionUserName == null)
{
throw new ArgumentNullException("permissionUserName");
}
uint folderHandle = this.GetFolderObjectHandle(folderType);
uint pidTagMemberRights = this.ParsePermissionFromPermissionTypeListToByteFormat(permissionList);
PermissionData[] permissionsDataArray = this.SetPermissionDataArrayForAdd(permissionUserName, pidTagMemberRights);
this.responseSOHs = this.DoRopCall(
this.CreateModifyPermissionsRequestBuffer(permissionsDataArray, requestBufferFlags),
folderHandle,
ref this.response,
ref this.rawData);
RopModifyPermissionsResponse modifyPermissionsResponse = (RopModifyPermissionsResponse)this.response;
this.VerifyModifyPermissionsResponse();
uint responseValue = modifyPermissionsResponse.ReturnValue;
this.VerifyReturnValueForModifyPermission();
if (responseValue == UINT32SUCCESS)
{
this.VerifyReturnValueSuccessForModifyPermission(responseValue);
}
// RopRelease folder handle
this.ReleaseObject(folderHandle);
return responseValue;
}