static void FillOperation(IWmiInstance operation, OperationDescription operationDescription)
        {
            operation.SetProperty(AdministrationStrings.Name, operationDescription.Name);
            operation.SetProperty(AdministrationStrings.Action, FixWildcardAction(operationDescription.Messages[0].Action));
            if (operationDescription.Messages.Count > 1)
            {
                operation.SetProperty(AdministrationStrings.ReplyAction, FixWildcardAction(operationDescription.Messages[1].Action));
            }
            operation.SetProperty(AdministrationStrings.IsOneWay, operationDescription.IsOneWay);
            operation.SetProperty(AdministrationStrings.IsInitiating, operationDescription.IsInitiating);
            operation.SetProperty(AdministrationStrings.IsTerminating, operationDescription.IsTerminating);
            operation.SetProperty(AdministrationStrings.AsyncPattern, null != operationDescription.BeginMethod);
            if (null != operationDescription.SyncMethod)
            {
                if (null != operationDescription.SyncMethod.ReturnType)
                {
                    operation.SetProperty(AdministrationStrings.ReturnType, operationDescription.SyncMethod.ReturnType.Name);
                }
                operation.SetProperty(AdministrationStrings.MethodSignature, operationDescription.SyncMethod.ToString());
                ParameterInfo[] parameterInfo = operationDescription.SyncMethod.GetParameters();
                string[] parameterTypes = new string[parameterInfo.Length];
                for (int i = 0; i < parameterInfo.Length; i++)
                {
                    parameterTypes[i] = parameterInfo[i].ParameterType.ToString();
                }
                operation.SetProperty(AdministrationStrings.ParameterTypes, parameterTypes);
            }
            operation.SetProperty(AdministrationStrings.IsCallback, operationDescription.Messages[0].Direction == MessageDirection.Output);

            FillBehaviorsInfo(operation, operationDescription.Behaviors);

        }
 private static void FillBehaviorInfo(IContractBehavior behavior, IWmiInstance existingInstance, out IWmiInstance instance)
 {
     instance = null;
     if (behavior is DeliveryRequirementsAttribute)
     {
         instance = existingInstance.NewInstance("DeliveryRequirementsAttribute");
         DeliveryRequirementsAttribute attribute = (DeliveryRequirementsAttribute) behavior;
         instance.SetProperty("QueuedDeliveryRequirements", attribute.QueuedDeliveryRequirements.ToString());
         instance.SetProperty("RequireOrderedDelivery", attribute.RequireOrderedDelivery);
         if (null != attribute.TargetContract)
         {
             instance.SetProperty("TargetContract", attribute.TargetContract.ToString());
         }
     }
     else if (behavior is IWmiInstanceProvider)
     {
         IWmiInstanceProvider provider = (IWmiInstanceProvider) behavior;
         instance = existingInstance.NewInstance(provider.GetInstanceType());
         provider.FillInstance(instance);
     }
     else
     {
         instance = existingInstance.NewInstance("Behavior");
     }
     if (instance != null)
     {
         instance.SetProperty("Type", behavior.GetType().FullName);
     }
 }
        static void FillContract(IWmiInstance contract, ContractDescription contractDescription)
        {
            Fx.Assert(null != contractDescription, "contractDescription cannot be null");
            contract.SetProperty(AdministrationStrings.Type, contractDescription.ContractType.Name);
            if (null != contractDescription.CallbackContractType)
            {
                contract.SetProperty(AdministrationStrings.CallbackContract, ContractReference(contractDescription.CallbackContractType.Name));
            }

            contract.SetProperty(AdministrationStrings.Name, contractDescription.Name);
            contract.SetProperty(AdministrationStrings.Namespace, contractDescription.Namespace);
            contract.SetProperty(AdministrationStrings.SessionMode, contractDescription.SessionMode.ToString());

            IWmiInstance[] operations = new IWmiInstance[contractDescription.Operations.Count];
            for (int j = 0; j < operations.Length; ++j)
            {
                OperationDescription operationDescription = contractDescription.Operations[j];
                Fx.Assert(operationDescription.Messages.Count > 0, "");
                IWmiInstance operation = contract.NewInstance(AdministrationStrings.Operation);
                FillOperation(operation, operationDescription);
                operations[j] = operation;

            }
            contract.SetProperty(AdministrationStrings.Operations, operations);
            FillBehaviorsInfo(contract, contractDescription.Behaviors);
        }
        bool IWmiProvider.GetInstance(IWmiInstance instance)
        {
            string serviceRef = instance.GetProperty(AdministrationStrings.Service) as string;
            string endpointRef = instance.GetProperty(AdministrationStrings.Endpoint) as string;

            return !String.IsNullOrEmpty(serviceRef) && !String.IsNullOrEmpty(endpointRef);
        }
Esempio n. 5
0
        bool IWmiProvider.GetInstance(IWmiInstance instance)
        {
            Fx.Assert(null != instance, "");
            string serviceRef = instance.GetProperty(AdministrationStrings.Service) as string;
            string appDomainInfoRef = instance.GetProperty(AdministrationStrings.AppDomainInfo) as string;

            return !String.IsNullOrEmpty(serviceRef) && !String.IsNullOrEmpty(appDomainInfoRef);
        }
        bool IWmiProvider.GetInstance(IWmiInstance instance)
        {
            Fx.Assert(null != instance, "");
            string serviceRef = instance.GetProperty(AdministrationStrings.Service) as string;
            string appDomainInfoRef = instance.GetProperty(AdministrationStrings.AppDomainInfo) as string;

            return !String.IsNullOrEmpty(serviceRef) && !String.IsNullOrEmpty(appDomainInfoRef);
        }
        void IWmiProvider.EnumInstances(IWmiInstances instances)
        {
            Fx.Assert(null != instances, "");
            IWmiInstance instance = instances.NewInstance(null);

            FillAppDomainInfo(instance);
            instances.AddInstance(instance);
        }
 private static void FillBehaviorInfo(IOperationBehavior behavior, IWmiInstance existingInstance, out IWmiInstance instance)
 {
     instance = null;
     if (behavior is DataContractSerializerOperationBehavior)
     {
         instance = existingInstance.NewInstance("DataContractSerializerOperationBehavior");
         DataContractSerializerOperationBehavior behavior2 = (DataContractSerializerOperationBehavior) behavior;
         instance.SetProperty("IgnoreExtensionDataObject", behavior2.IgnoreExtensionDataObject);
         instance.SetProperty("MaxItemsInObjectGraph", behavior2.MaxItemsInObjectGraph);
         if (behavior2.DataContractFormatAttribute != null)
         {
             instance.SetProperty("Style", behavior2.DataContractFormatAttribute.Style.ToString());
         }
     }
     else if (behavior is OperationBehaviorAttribute)
     {
         instance = existingInstance.NewInstance("OperationBehaviorAttribute");
         OperationBehaviorAttribute attribute = (OperationBehaviorAttribute) behavior;
         instance.SetProperty("AutoDisposeParameters", attribute.AutoDisposeParameters);
         instance.SetProperty("Impersonation", attribute.Impersonation.ToString());
         instance.SetProperty("ReleaseInstanceMode", attribute.ReleaseInstanceMode.ToString());
         instance.SetProperty("TransactionAutoComplete", attribute.TransactionAutoComplete);
         instance.SetProperty("TransactionScopeRequired", attribute.TransactionScopeRequired);
     }
     else if (behavior is TransactionFlowAttribute)
     {
         instance = existingInstance.NewInstance("TransactionFlowAttribute");
         TransactionFlowAttribute attribute2 = (TransactionFlowAttribute) behavior;
         instance.SetProperty("TransactionFlowOption", attribute2.Transactions.ToString());
     }
     else if (behavior is XmlSerializerOperationBehavior)
     {
         instance = existingInstance.NewInstance("XmlSerializerOperationBehavior");
         XmlSerializerOperationBehavior behavior3 = (XmlSerializerOperationBehavior) behavior;
         if (behavior3.XmlSerializerFormatAttribute != null)
         {
             instance.SetProperty("Style", behavior3.XmlSerializerFormatAttribute.Style.ToString());
             instance.SetProperty("Use", behavior3.XmlSerializerFormatAttribute.Use.ToString());
             instance.SetProperty("SupportFaults", behavior3.XmlSerializerFormatAttribute.SupportFaults.ToString());
         }
     }
     else if (behavior is IWmiInstanceProvider)
     {
         IWmiInstanceProvider provider = (IWmiInstanceProvider) behavior;
         instance = existingInstance.NewInstance(provider.GetInstanceType());
         provider.FillInstance(instance);
     }
     else
     {
         instance = existingInstance.NewInstance("Behavior");
     }
     if (instance != null)
     {
         instance.SetProperty("Type", behavior.GetType().FullName);
     }
 }
 public static void FillCollectionInfo(ICollection info, IWmiInstance instance, string propertyName)
 {
     string[] strArray = new string[info.Count];
     int num = 0;
     foreach (object obj2 in info)
     {
         strArray[num++] = obj2.ToString();
     }
     instance.SetProperty(propertyName, strArray);
 }
        internal static IWmiInstance GetAppDomainInfo(IWmiInstance instance)
        {
            Fx.Assert(null != instance, "");
            IWmiInstance appDomainInfo = instance.NewInstance(AdministrationStrings.AppDomainInfo);
            if (null != appDomainInfo)
            {
                AppDomainInstanceProvider.FillAppDomainInfo(appDomainInfo);
            }

            return appDomainInfo;
        }
        private static void FillReaderQuotas(IWmiInstance instance, XmlDictionaryReaderQuotas readerQuotas)
        {
            IWmiInstance instance2 = instance.NewInstance("XmlDictionaryReaderQuotas");

            instance2.SetProperty("MaxArrayLength", readerQuotas.MaxArrayLength);
            instance2.SetProperty("MaxBytesPerRead", readerQuotas.MaxBytesPerRead);
            instance2.SetProperty("MaxDepth", readerQuotas.MaxDepth);
            instance2.SetProperty("MaxNameTableCharCount", readerQuotas.MaxNameTableCharCount);
            instance2.SetProperty("MaxStringContentLength", readerQuotas.MaxStringContentLength);
            instance.SetProperty("ReaderQuotas", instance2);
        }
Esempio n. 12
0
        void IWmiProvider.EnumInstances(IWmiInstances instances)
        {
            Fx.Assert(null != instances, "");
            foreach (ServiceInfo info in new ServiceInfoCollection(ManagementExtension.Services))
            {
                IWmiInstance instance = instances.NewInstance(null);

                instance.SetProperty(AdministrationStrings.AppDomainInfo, AppDomainInstanceProvider.GetReference());
                instance.SetProperty(AdministrationStrings.Service, ServiceInstanceProvider.GetReference(info));

                instances.AddInstance(instance);
            }
        }
        bool IWmiProvider.GetInstance(IWmiInstance instance)
        {
            Fx.Assert(null != instance, "");
            bool bFound = false;
            if ((int)instance.GetProperty(AdministrationStrings.ProcessId) == AppDomainInfo.Current.ProcessId
                && String.Equals((string)instance.GetProperty(AdministrationStrings.Name), AppDomainInfo.Current.Name, StringComparison.Ordinal))
            {
                FillAppDomainInfo(instance);
                bFound = true;
            }

            return bFound;
        }
 private static void FillAddressInfo(System.ServiceModel.Administration.EndpointInfo endpoint, IWmiInstance instance)
 {
     string[] info = new string[endpoint.Headers.Count];
     int num = 0;
     foreach (AddressHeader header in endpoint.Headers)
     {
         PlainXmlWriter writer = new PlainXmlWriter();
         header.WriteAddressHeader(writer);
         info[num++] = writer.ToString();
     }
     ProviderBase.FillCollectionInfo(info, instance, "AddressHeaders");
     instance.SetProperty("Address", (endpoint.Address == null) ? string.Empty : endpoint.Address.ToString());
     instance.SetProperty("ListenUri", (endpoint.ListenUri == null) ? string.Empty : endpoint.ListenUri.ToString());
     instance.SetProperty("AddressIdentity", (endpoint.Identity == null) ? string.Empty : endpoint.Identity.ToString());
 }
 void FillBehaviorsInfo(ServiceInfo info, IWmiInstance instance)
 {
     Fx.Assert(null != instance, "");
     List<IWmiInstance> behaviors = new List<IWmiInstance>(info.Behaviors.Count);
     foreach (IServiceBehavior behavior in info.Behaviors)
     {
         IWmiInstance behaviorInstance;
         FillBehaviorInfo(behavior, instance, out behaviorInstance);
         if (null != behaviorInstance)
         {
             behaviors.Add(behaviorInstance);
         }
     }
     instance.SetProperty(AdministrationStrings.Behaviors, behaviors.ToArray());
 }
 internal static void FillAppDomainInfo(IWmiInstance instance)
 {
     Fx.Assert(null != instance, "");
     AppDomainInfo domainInfo = AppDomainInfo.Current;
     instance.SetProperty(AdministrationStrings.Name, domainInfo.Name);
     instance.SetProperty(AdministrationStrings.AppDomainId, domainInfo.Id);
     instance.SetProperty(AdministrationStrings.PerformanceCounters, PerformanceCounters.Scope.ToString());
     instance.SetProperty(AdministrationStrings.IsDefault, domainInfo.IsDefaultAppDomain);
     instance.SetProperty(AdministrationStrings.ProcessId, domainInfo.ProcessId);
     instance.SetProperty(AdministrationStrings.TraceLevel, DiagnosticUtility.Level.ToString());
     instance.SetProperty(AdministrationStrings.LogMalformedMessages, MessageLogger.LogMalformedMessages);
     instance.SetProperty(AdministrationStrings.LogMessagesAtServiceLevel, MessageLogger.LogMessagesAtServiceLevel);
     instance.SetProperty(AdministrationStrings.LogMessagesAtTransportLevel, MessageLogger.LogMessagesAtTransportLevel);
     instance.SetProperty(AdministrationStrings.ServiceConfigPath, AspNetEnvironment.Current.ConfigurationPath);
     FillListenersInfo(instance);
 }
Esempio n. 17
0
        public static void FillCollectionInfo(ICollection info, IWmiInstance instance, string propertyName)
        {
            Fx.Assert(null != info, "");
            Fx.Assert(null != instance, "");
//warning 56507 : Prefer 'string.IsNullOrEmpty(action)' over checks for null and/or emptiness.
#pragma warning suppress 56507 //[....]; Asserting non-null object for marshalling reasons.  Empty string may be valid input.
            Fx.Assert(null != propertyName, "");

            string[] data = new string[info.Count];
            int i = 0;
            foreach (object o in info)
            {
                data[i++] = o.ToString();
            }
            instance.SetProperty(propertyName, data);
        }
 public static void FillCollectionInfo(IEnumerable info, IWmiInstance instance, string propertyName)
 {
     int num = 0;
     using (IEnumerator enumerator = info.GetEnumerator())
     {
         while (enumerator.MoveNext())
         {
             object current = enumerator.Current;
             num++;
         }
     }
     string[] strArray = new string[num];
     num = 0;
     foreach (object obj2 in info)
     {
         strArray[num++] = obj2.ToString();
     }
     instance.SetProperty(propertyName, strArray);
 }
        bool IWmiProvider.GetInstance(IWmiInstance instance)
        {
            Fx.Assert(null != instance, "");
            bool bFound = false;
            if ((int)instance.GetProperty(AdministrationStrings.ProcessId) == AppDomainInfo.Current.ProcessId)
            {
                foreach (ServiceInfo info in new ServiceInfoCollection(ManagementExtension.Services))
                {
                    if (String.Equals((string)instance.GetProperty(AdministrationStrings.DistinguishedName), info.DistinguishedName, StringComparison.OrdinalIgnoreCase))
                    {
                        FillServiceInfo(info, instance);
                        bFound = true;
                        break;
                    }
                }
            }

            return bFound;
        }
        static IWmiInstance[] CreateListenersInfo(TraceSource traceSource, IWmiInstance instance)
        {
            Fx.Assert(null != traceSource, "");
            Fx.Assert(null != instance, "");

            IWmiInstance[] traceListeners = new IWmiInstance[traceSource.Listeners.Count];

            for (int i = 0; i < traceSource.Listeners.Count; i++)
            {
                TraceListener traceListener = traceSource.Listeners[i];
                IWmiInstance traceListenerWmiInstance = instance.NewInstance(AdministrationStrings.TraceListener);
                traceListenerWmiInstance.SetProperty(AdministrationStrings.Name, traceListener.Name);
                List<IWmiInstance> traceListenerArguments = new List<IWmiInstance>(1);

                Type type = traceListener.GetType();
                string initializeData = (string)type.InvokeMember(AdministrationStrings.InitializeData, BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance, null, traceListener, null, CultureInfo.InvariantCulture);
                string[] supportedAttributes = (string[])type.InvokeMember(AdministrationStrings.GetSupportedAttributes, BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Instance, null, traceListener, null, CultureInfo.InvariantCulture);

                IWmiInstance argumentWmiInstance = instance.NewInstance(AdministrationStrings.TraceListenerArgument);
                argumentWmiInstance.SetProperty(AdministrationStrings.Name, AdministrationStrings.InitializeData);
                argumentWmiInstance.SetProperty(AdministrationStrings.Value, initializeData);
                traceListenerArguments.Add(argumentWmiInstance);

                if (null != supportedAttributes)
                {
                    foreach (string attribute in supportedAttributes)
                    {
                        argumentWmiInstance = instance.NewInstance(AdministrationStrings.TraceListenerArgument);
                        argumentWmiInstance.SetProperty(AdministrationStrings.Name, attribute);
                        argumentWmiInstance.SetProperty(AdministrationStrings.Value, traceListener.Attributes[attribute]);
                        traceListenerArguments.Add(argumentWmiInstance);
                    }
                }
                traceListenerWmiInstance.SetProperty(AdministrationStrings.TraceListenerArguments, traceListenerArguments.ToArray());
                traceListeners[i] = traceListenerWmiInstance;
            }

            return traceListeners;
        }
        static void FillBindingInfo(EndpointInfo endpoint, IWmiInstance instance)
        {
            Fx.Assert(null != endpoint, "");
            Fx.Assert(null != instance, "");
            IWmiInstance binding = instance.NewInstance(AdministrationStrings.Binding);

            IWmiInstance[] bindings = new IWmiInstance[endpoint.Binding.Elements.Count];
            for (int j = 0; j < bindings.Length; ++j)
            {
                bindings[j] = binding;
                FillBindingInfo(endpoint.Binding.Elements[j], ref bindings[j]);
            }
            binding.SetProperty(AdministrationStrings.BindingElements, bindings);
            binding.SetProperty(AdministrationStrings.Name, endpoint.Binding.Name);
            binding.SetProperty(AdministrationStrings.Namespace, endpoint.Binding.Namespace);
            binding.SetProperty(AdministrationStrings.CloseTimeout, endpoint.Binding.CloseTimeout);
            binding.SetProperty(AdministrationStrings.Scheme, endpoint.Binding.Scheme);
            binding.SetProperty(AdministrationStrings.OpenTimeout, endpoint.Binding.OpenTimeout);
            binding.SetProperty(AdministrationStrings.ReceiveTimeout, endpoint.Binding.ReceiveTimeout);
            binding.SetProperty(AdministrationStrings.SendTimeout, endpoint.Binding.SendTimeout);

            instance.SetProperty(AdministrationStrings.Binding, binding);
        }
 bool IWmiProvider.GetInstance(IWmiInstance contract)
 {
     bool flag = false;
     if ((((int) contract.GetProperty("ProcessId")) == AppDomainInfo.Current.ProcessId) && (((int) contract.GetProperty("AppDomainId")) == AppDomainInfo.Current.Id))
     {
         ContractDescription description;
         string property = (string) contract.GetProperty("Name");
         UpdateContracts();
         if (knownContracts.TryGetValue(property, out description))
         {
             flag = true;
             FillContract(contract, description);
         }
     }
     return flag;
 }
 private static void FillBehaviorInfo(IEndpointBehavior behavior, IWmiInstance existingInstance, out IWmiInstance instance)
 {
     instance = null;
     if (behavior is ClientCredentials)
     {
         instance = existingInstance.NewInstance("ClientCredentials");
         ClientCredentials credentials = (ClientCredentials) behavior;
         instance.SetProperty("SupportInteractive", credentials.SupportInteractive);
         if ((credentials.ClientCertificate != null) && (credentials.ClientCertificate.Certificate != null))
         {
             instance.SetProperty("ClientCertificate", credentials.ClientCertificate.Certificate.ToString());
         }
         if (credentials.IssuedToken != null)
         {
             string str = string.Format(CultureInfo.InvariantCulture, "{0}: {1}", new object[] { "CacheIssuedTokens", credentials.IssuedToken.CacheIssuedTokens });
             instance.SetProperty("IssuedToken", str);
         }
         if (credentials.HttpDigest != null)
         {
             string str2 = string.Format(CultureInfo.InvariantCulture, "{0}: {1}", new object[] { "AllowedImpersonationLevel", credentials.HttpDigest.AllowedImpersonationLevel.ToString() });
             instance.SetProperty("HttpDigest", str2);
         }
         if ((credentials.Peer != null) && (credentials.Peer.Certificate != null))
         {
             instance.SetProperty("Peer", credentials.Peer.Certificate.ToString(true));
         }
         if (credentials.UserName != null)
         {
             instance.SetProperty("UserName", "********");
         }
         if (credentials.Windows != null)
         {
             string str3 = string.Format(CultureInfo.InvariantCulture, "{0}: {1}, {2}: {3}", new object[] { "AllowedImpersonationLevel", credentials.Windows.AllowedImpersonationLevel.ToString(), "AllowNtlm", credentials.Windows.AllowNtlm });
             instance.SetProperty("Windows", str3);
         }
     }
     else if (behavior is MustUnderstandBehavior)
     {
         instance = existingInstance.NewInstance("MustUnderstandBehavior");
     }
     else if (behavior is SynchronousReceiveBehavior)
     {
         instance = existingInstance.NewInstance("SynchronousReceiveBehavior");
     }
     else if (behavior is DispatcherSynchronizationBehavior)
     {
         instance = existingInstance.NewInstance("DispatcherSynchronizationBehavior");
     }
     else if (behavior is TransactedBatchingBehavior)
     {
         instance = existingInstance.NewInstance("TransactedBatchingBehavior");
         instance.SetProperty("MaxBatchSize", ((TransactedBatchingBehavior) behavior).MaxBatchSize);
     }
     else if (behavior is ClientViaBehavior)
     {
         instance = existingInstance.NewInstance("ClientViaBehavior");
         instance.SetProperty("Uri", ((ClientViaBehavior) behavior).Uri.ToString());
     }
     else if (behavior is IWmiInstanceProvider)
     {
         IWmiInstanceProvider provider = (IWmiInstanceProvider) behavior;
         instance = existingInstance.NewInstance(provider.GetInstanceType());
         provider.FillInstance(instance);
     }
     else
     {
         instance = existingInstance.NewInstance("Behavior");
     }
     if (instance != null)
     {
         instance.SetProperty("Type", behavior.GetType().FullName);
     }
 }
 private static void FillOperation(IWmiInstance operation, OperationDescription operationDescription)
 {
     operation.SetProperty("Name", operationDescription.Name);
     operation.SetProperty("Action", FixWildcardAction(operationDescription.Messages[0].Action));
     if (operationDescription.Messages.Count > 1)
     {
         operation.SetProperty("ReplyAction", FixWildcardAction(operationDescription.Messages[1].Action));
     }
     operation.SetProperty("IsOneWay", operationDescription.IsOneWay);
     operation.SetProperty("IsInitiating", operationDescription.IsInitiating);
     operation.SetProperty("IsTerminating", operationDescription.IsTerminating);
     operation.SetProperty("AsyncPattern", null != operationDescription.BeginMethod);
     if (null != operationDescription.SyncMethod)
     {
         if (null != operationDescription.SyncMethod.ReturnType)
         {
             operation.SetProperty("ReturnType", operationDescription.SyncMethod.ReturnType.Name);
         }
         operation.SetProperty("MethodSignature", operationDescription.SyncMethod.ToString());
         ParameterInfo[] parameters = operationDescription.SyncMethod.GetParameters();
         string[] strArray = new string[parameters.Length];
         for (int i = 0; i < parameters.Length; i++)
         {
             strArray[i] = parameters[i].ParameterType.ToString();
         }
         operation.SetProperty("ParameterTypes", strArray);
     }
     operation.SetProperty("IsCallback", operationDescription.Messages[0].Direction == MessageDirection.Output);
     FillBehaviorsInfo(operation, operationDescription.Behaviors);
 }
 private static void FillReaderQuotas(IWmiInstance instance, XmlDictionaryReaderQuotas readerQuotas)
 {
     IWmiInstance instance2 = instance.NewInstance("XmlDictionaryReaderQuotas");
     instance2.SetProperty("MaxArrayLength", readerQuotas.MaxArrayLength);
     instance2.SetProperty("MaxBytesPerRead", readerQuotas.MaxBytesPerRead);
     instance2.SetProperty("MaxDepth", readerQuotas.MaxDepth);
     instance2.SetProperty("MaxNameTableCharCount", readerQuotas.MaxNameTableCharCount);
     instance2.SetProperty("MaxStringContentLength", readerQuotas.MaxStringContentLength);
     instance.SetProperty("ReaderQuotas", instance2);
 }
 private static void FillBehaviorsInfo(IWmiInstance operation, KeyedByTypeCollection<IOperationBehavior> behaviors)
 {
     List<IWmiInstance> list = new List<IWmiInstance>(behaviors.Count);
     foreach (IOperationBehavior behavior in behaviors)
     {
         IWmiInstance instance;
         FillBehaviorInfo(behavior, operation, out instance);
         if (instance != null)
         {
             list.Add(instance);
         }
     }
     operation.SetProperty("Behaviors", list.ToArray());
 }
 private static void FillContract(IWmiInstance contract, ContractDescription contractDescription)
 {
     contract.SetProperty("Type", contractDescription.ContractType.Name);
     if (null != contractDescription.CallbackContractType)
     {
         contract.SetProperty("CallbackContract", ContractReference(contractDescription.CallbackContractType.Name));
     }
     contract.SetProperty("Name", contractDescription.Name);
     contract.SetProperty("Namespace", contractDescription.Namespace);
     contract.SetProperty("SessionMode", contractDescription.SessionMode.ToString());
     IWmiInstance[] instanceArray = new IWmiInstance[contractDescription.Operations.Count];
     for (int i = 0; i < instanceArray.Length; i++)
     {
         OperationDescription operationDescription = contractDescription.Operations[i];
         IWmiInstance operation = contract.NewInstance("Operation");
         FillOperation(operation, operationDescription);
         instanceArray[i] = operation;
     }
     contract.SetProperty("Operations", instanceArray);
     FillBehaviorsInfo(contract, contractDescription.Behaviors);
 }
 bool IWmiProvider.DeleteInstance(IWmiInstance instance)
 {
     return false;
 }
 bool IWmiProvider.PutInstance(IWmiInstance instance)
 {
     return false;
 }
 internal MethodContext(WbemProvider.ParameterContext parms, string methodName, WbemNative.IWbemClassObject wbemInParms, WbemProvider.WbemInstance wbemInstance)
 {
     this.parms = parms;
     this.methodName = methodName;
     this.wbemInParms = wbemInParms;
     this.instance = new WbemProvider.InstanceContext(wbemInstance);
     WbemNative.IWbemClassObject ppObject = null;
     WbemException.ThrowIfFail(parms.WbemServices.GetObject(parms.ClassName, 0, parms.WbemContext, ref ppObject, IntPtr.Zero));
     WbemNative.IWbemClassObject ppOutSignature = null;
     WbemException.ThrowIfFail(ppObject.GetMethod(methodName, 0, IntPtr.Zero, out ppOutSignature));
     WbemException.ThrowIfFail(ppOutSignature.SpawnInstance(0, out this.wbemOutParms));
 }
 void IWmiInstances.AddInstance(IWmiInstance inst)
 {
     WbemException.ThrowIfFail(this.parms.WbemSink.Indicate(1, new WbemNative.IWbemClassObject[] { ((WbemProvider.InstanceContext) inst).WbemObject }));
 }
 bool IWmiProvider.GetInstance(IWmiInstance instance)
 {
     bool flag = false;
     if (this.OwnInstance(instance))
     {
         string property = (string) instance.GetProperty("ListenUri");
         string contractName = (string) instance.GetProperty("ContractName");
         System.ServiceModel.Administration.EndpointInfo endpoint = this.FindEndpoint(property, contractName);
         if (endpoint != null)
         {
             FillEndpointInfo(endpoint, instance);
             flag = true;
         }
     }
     return flag;
 }
 private bool OwnInstance(IWmiInstance instance)
 {
     return ((((int) instance.GetProperty("ProcessId")) == AppDomainInfo.Current.ProcessId) && (((int) instance.GetProperty("AppDomainId")) == AppDomainInfo.Current.Id));
 }
 private string GetOperationCounterInstanceName(string operationName, IWmiInstance endpointInstance)
 {
     string property = (string) endpointInstance.GetProperty("ListenUri");
     string contractName = (string) endpointInstance.GetProperty("ContractName");
     System.ServiceModel.Administration.EndpointInfo info = this.FindEndpoint(property, contractName);
     string str3 = string.Empty;
     if (PerformanceCounters.PerformanceCountersEnabled && (info != null))
     {
         str3 = OperationPerformanceCountersBase.CreateFriendlyInstanceName(info.ServiceName, info.Contract.Name, operationName, info.Address.AbsoluteUri.ToUpperInvariant());
     }
     return str3;
 }