public RopGetPropertiesSpecificResponse RopGetPropertiesSpecific(uint objHandle, PropertyTag[] propertyTags)
{
this.rawData = null;
this.response = null;
this.responseSOHs = null;
RopGetPropertiesSpecificRequest getPropertiesSpecificRequest;
RopGetPropertiesSpecificResponse getPropertiesSpecificResponse;
getPropertiesSpecificRequest.RopId = 0x07;
getPropertiesSpecificRequest.LogonId = 0x00;
getPropertiesSpecificRequest.InputHandleIndex = 0x00;
getPropertiesSpecificRequest.PropertySizeLimit = 0x00;
getPropertiesSpecificRequest.WantUnicode = 0x01;
if (propertyTags != null)
{
getPropertiesSpecificRequest.PropertyTagCount = (ushort)propertyTags.Length;
}
else
{
getPropertiesSpecificRequest.PropertyTagCount = 0x00;
}
getPropertiesSpecificRequest.PropertyTags = propertyTags;
this.responseSOHs = this.DoRPCCall(getPropertiesSpecificRequest, objHandle, ref this.response, ref this.rawData);
getPropertiesSpecificResponse = (RopGetPropertiesSpecificResponse)this.response;
// The getPropertiesSpecificResponse.ReturnValue equals 0 means that this ROP is successful.
// So the propertyTags in getPropertiesSpecificRequest is correct
if (getPropertiesSpecificResponse.ReturnValue == 0)
{
this.VerifyPropertiesSpecific(propertyTags);
}
return getPropertiesSpecificResponse;
}