private void QueryPermission(FolderTypeEnum folderType, out uint folderHandle, out List<PermissionUserInfo> permissionUserList)
{
permissionUserList = new List<PermissionUserInfo>();
folderHandle = this.GetFolderObjectHandle(folderType);
this.responseSOHs = this.DoRopCall(this.CreateGetPermissionsTableRequestBuffer(folderType), (uint)folderHandle, ref this.response, ref this.rawData);
RopGetPermissionsTableResponse getPermissionsTableResponse = (RopGetPermissionsTableResponse)this.response;
Site.Assert.AreEqual<uint>(UINT32SUCCESS, getPermissionsTableResponse.ReturnValue, "0 indicates the RopGetPermissionsTable operates successfully.");
uint tableHandle = this.responseSOHs[0][getPermissionsTableResponse.OutputHandleIndex];
PropertyTag[] propertyTags = this.CreateHierarchyTablePropertyTagsForPermissionUser();
this.DoRopCall(this.CreateSetColumnsRequestBuffer(propertyTags), tableHandle, ref this.response, ref this.rawData);
RopSetColumnsResponse setColumnsResponse = (RopSetColumnsResponse)this.response;
Site.Assert.AreEqual<uint>(UINT32SUCCESS, setColumnsResponse.ReturnValue, "0 indicates the RopSetColumns operates successfully.");
this.DoRopCall(this.CreateQueryRowsRequestBuffer(), tableHandle, ref this.response, ref this.rawData);
RopQueryRowsResponse queryRowsResponse = (RopQueryRowsResponse)this.response;
Site.Assert.AreEqual<uint>(UINT32SUCCESS, queryRowsResponse.ReturnValue, "0 indicates the RopQueryRows operates successfully.");
if (!this.ParseUserListFromRawData(out permissionUserList, ref this.rawData))
{
throw new ArgumentException("Failed to parse the row data from permissions list");
}
// RopRelease table message
this.ReleaseObject(tableHandle);
}