Helper class to marshal parameters for UIA custom method calls Corresponds to UIAutomationParameter
        // Get a cached property value for this custom property
        protected object GetCachedPropertyValue(UiaPropertyInfoHelper propInfo)
        {
            var param = new UiaParameterHelper(propInfo.UiaType);

            PatternInstance.GetProperty(propInfo.Index, 1 /* fCached */, param.GetUiaType(), param.Data);
            return(param.Value);
        }
        private void CallProperty(IInvocation invocation, UiaPropertyInfoHelper propHelper, bool cached)
        {
            // it is call for CurrentXxx property
            var param = new UiaParameterHelper(propHelper.UiaType);

            NativeMethods.WrapUiaComCall(() => _patternInstance.GetProperty(propHelper.Index, cached ? 1 : 0, propHelper.UiaType, param.Data));
            object value = param.Value;

            if (invocation.Method.ReturnType == typeof(AutomationElement))
            {
                value = AutomationElement.Wrap((IUIAutomationElement)value);
            }
            invocation.ReturnValue = value;
        }
 // Get a current property value for this custom property
 protected object GetCurrentPropertyValue(UiaPropertyInfoHelper propInfo)
 {
     var param = new UiaParameterHelper(propInfo.UiaType);
     PatternInstance.GetProperty(propInfo.Index, 0 /* fCached */, param.GetUiaType(), param.Data);
     return param.Value;
 }
 private void CallProperty(IInvocation invocation, UiaPropertyInfoHelper propHelper, bool cached)
 {
     // it is call for CurrentXxx property
     var param = new UiaParameterHelper(propHelper.UiaType);
     NativeMethods.WrapUiaComCall(() => _patternInstance.GetProperty(propHelper.Index, cached ? 1 : 0, propHelper.UiaType, param.Data));
     object value = param.Value;
     if (invocation.Method.ReturnType == typeof(AutomationElement))
         value = AutomationElement.Wrap((IUIAutomationElement)value);
     invocation.ReturnValue = value;
 }