Exemple #1
0
		public static CimSession Create(string computerName, CimSessionOptions sessionOptions)
		{
			IPAddress pAddress = null;
			InstanceHandle instanceHandle = null;
			SessionHandle sessionHandle = null;
			CimSession cimSession;
			string protocol;
			DestinationOptionsHandle destinationOptionsHandle;
			string str = computerName;
			if (!string.IsNullOrEmpty(str) && IPAddress.TryParse(str, out pAddress) && pAddress.AddressFamily == AddressFamily.InterNetworkV6 && str[0] != '[')
			{
				str = string.Concat("[", str, "]");
			}
			IDisposable disposable = CimApplication.AssertNoPendingShutdown();
			using (disposable)
			{
				ApplicationHandle handle = CimApplication.Handle;
				if (sessionOptions == null)
				{
					protocol = null;
				}
				else
				{
					protocol = sessionOptions.Protocol;
				}
				string str1 = str;
				if (sessionOptions == null)
				{
					destinationOptionsHandle = null;
				}
				else
				{
					destinationOptionsHandle = sessionOptions.DestinationOptionsHandle ?? sessionOptions.DestinationOptionsHandleOnDemand;
				}
				MiResult miResult = ApplicationMethods.NewSession(handle, protocol, str1, destinationOptionsHandle, out instanceHandle, out sessionHandle);
				if (miResult != MiResult.NOT_FOUND)
				{
					CimException.ThrowIfMiResultFailure(miResult, instanceHandle);
					CimSession cimSession1 = new CimSession(sessionHandle, computerName);
					cimSession = cimSession1;
				}
				else
				{
					throw new CimException(miResult, null, instanceHandle, System.Management.Automation.Strings.UnrecognizedProtocolName);
				}
			}
			return cimSession;
		}
Exemple #2
0
        private static ApplicationHandle GetApplicationHandle()
        {
            ApplicationHandle applicationHandle = null;
            InstanceHandle    instanceHandle    = null;
            MiResult          miResult          = ApplicationMethods.Initialize(0, AppDomain.CurrentDomain.FriendlyName, out instanceHandle, out applicationHandle);

            CimException.ThrowIfMiResultFailure(miResult, instanceHandle);
            AppDomain currentDomain = AppDomain.CurrentDomain;

            currentDomain.DomainUnload += (object sender, EventArgs eventArgs) => CimApplication.Shutdown();
            AppDomain appDomain = AppDomain.CurrentDomain;

            appDomain.ProcessExit += (object param0, EventArgs param1) => {
                ApplicationMethods.SupressFurtherCallbacks();
                CimApplication.Shutdown();
            };
            return(applicationHandle);
        }