internal void StreamedParameterCallback(OperationCallbackProcessingContext callbackProcessingContext, OperationHandle operationHandle, string parameterName, object parameterValue, MiType parameterType)
        {
            parameterValue = CimInstance.ConvertFromNativeLayer(parameterValue, null, null, !this._shortenLifetimeOfResults);
            CimInstance cimInstance = parameterValue as CimInstance;

            if (cimInstance != null)
            {
                cimInstance.SetCimSessionComputerName(this._CimSessionComputerName);
                cimInstance.SetCimSessionInstanceId(this._CimSessionInstanceID);
            }
            CimInstance[] cimInstanceArray = parameterValue as CimInstance[];
            if (cimInstanceArray != null)
            {
                CimInstance[] cimInstanceArray1 = cimInstanceArray;
                for (int i = 0; i < (int)cimInstanceArray1.Length; i++)
                {
                    CimInstance cimInstance1 = cimInstanceArray1[i];
                    if (cimInstance1 != null)
                    {
                        cimInstance1.SetCimSessionComputerName(this._CimSessionComputerName);
                        cimInstance1.SetCimSessionInstanceId(this._CimSessionInstanceID);
                    }
                }
            }
            try
            {
                CimMethodResultBase cimMethodStreamedResult = new CimMethodStreamedResult(parameterName, parameterValue, parameterType.ToCimType());
                base.ProcessNativeCallback(callbackProcessingContext, cimMethodStreamedResult, true, MiResult.OK, null, null);
            }
            finally
            {
                if (this._shortenLifetimeOfResults)
                {
                    CimInstance cimInstance2 = parameterValue as CimInstance;
                    if (cimInstance2 != null)
                    {
                        cimInstance2.Dispose();
                    }
                    CimInstance[] cimInstanceArray2 = parameterValue as CimInstance[];
                    if (cimInstanceArray2 != null)
                    {
                        CimInstance[] cimInstanceArray3 = cimInstanceArray2;
                        for (int j = 0; j < (int)cimInstanceArray3.Length; j++)
                        {
                            CimInstance cimInstance3 = cimInstanceArray3[j];
                            if (cimInstance3 != null)
                            {
                                cimInstance3.Dispose();
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Get an ExpandoObject representation of a CimInstance object
        /// </summary>
        /// <param name="obj">The object to convert.</param>
        private static ExpandoObject CimInstanceToExpandoObject(CimInstance obj)
        {
            try
            {
                ExpandoObject result           = new ExpandoObject();
                var           resultDictionary = (IDictionary <string, object>)result;

                foreach (var property in obj.CimInstanceProperties.Where(property => property.Value != null))
                {
                    resultDictionary[property.Name] = property.Value is CimInstance?CimInstanceToExpandoObject(property.Value as CimInstance) : property.Value.ToString();
                }

                return(result);
            }
            finally
            {
                obj.Dispose();
            }
        }