コード例 #1
0
ファイル: SharedInstanceHandle.cs プロジェクト: nickchal/pash
		internal SharedInstanceHandle(InstanceHandle handle, SharedInstanceHandle parent) : this(handle)
		{
			this._parent = parent;
			if (this._parent != null)
			{
				this._parent.AddRef();
			}
		}
コード例 #2
0
ファイル: ApplicationMethods.cs プロジェクト: nickchal/pash
        internal static MiResult Initialize(int p1, string p2, out InstanceHandle instanceHandle, out ApplicationHandle applicationHandle)
        {
			NativeCimApplication app = new NativeCimApplication();
			app.Id = p1;
			app.Target = p2;
			IntPtr appPtr = CimNativeApi.MarshalledObject.Create<NativeCimApplication>(app);
			applicationHandle = new ApplicationHandle(appPtr);
			NewInstance (applicationHandle, p2, null, out instanceHandle);
			return MiResult.OK;
        }
コード例 #3
0
ファイル: ApplicationMethods.cs プロジェクト: nickchal/pash
		internal static MiResult NewSession (ApplicationHandle handle, string protocol, string str1, DestinationOptionsHandle destinationOptionsHandle, out InstanceHandle instanceHandle, out SessionHandle sessionHandle)
		{
			string p1 = string.IsNullOrEmpty (str1) ? "localhost" : str1; //.Substring(1, str1.Length - 2);
			NewInstance (handle, p1, null, out instanceHandle);
			NativeCimSession session = new NativeCimSession();
			session.Protocol = protocol;
			session.ServerName = p1;
			session.DestinationOptions = destinationOptionsHandle == null ? IntPtr.Zero : destinationOptionsHandle.DangerousGetHandle ();
			IntPtr sessionPtr = (IntPtr)CimNativeApi.MarshalledObject.Create<NativeCimSession>(session);
			sessionHandle = new SessionHandle(sessionPtr);
			return MiResult.OK;
		}
コード例 #4
0
ファイル: OperationMethods.cs プロジェクト: nickchal/pash
		internal static unsafe MiResult GetClass(OperationHandle operationHandle, out ClassHandle classHandle, out bool moreResults, out MiResult result, out string errorMessage, out InstanceHandle completionDetails)
		{
			result = MiResult.OK;
			classHandle = null;
			completionDetails = null;
			errorMessage = "";
			moreResults = false;
			return MiResult.OK;
			/*
			int num;
			classHandle = null;
			moreResults = false;
			result = MiResult.OK;
			errorMessage = null;
			completionDetails = null;
			_MI_Class modopt(System.Runtime.CompilerServices.IsConst)* _MIClass modopt(System.Runtime.CompilerServices.IsConst)Pointer = (_MI_Class modopt(System.Runtime.CompilerServices.IsConst)*)((long)0);
			byte num1 = 0;
			_MI_Result _MIResult = 0;
			UInt16 modopt(System.Runtime.CompilerServices.IsConst)* uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer = (UInt16 modopt(System.Runtime.CompilerServices.IsConst)*)((long)0);
			_MI_Instance modopt(System.Runtime.CompilerServices.IsConst)* _MIInstance modopt(System.Runtime.CompilerServices.IsConst)Pointer = (_MI_Instance modopt(System.Runtime.CompilerServices.IsConst)*)((long)0);
			_MI_Result modopt(System.Runtime.CompilerServices.CallConvCdecl) _MIResult modopt(System.Runtime.CompilerServices.CallConvCdecl) = (_MI_Result)<Module>.?A0xf5a90918.MI_Operation_GetClass((void*)operationHandle.DangerousGetHandle(), ref (_MI_Class modopt(System.Runtime.CompilerServices.IsConst)*)((long)0), ref num1, (_MI_Result*)(&_MIResult), ref (UInt16 modopt(System.Runtime.CompilerServices.IsConst)*)((long)0), ref (_MI_Instance modopt(System.Runtime.CompilerServices.IsConst)*)((long)0));
			if ((_MI_Class modopt(System.Runtime.CompilerServices.IsConst)*)((long)0) != null)
			{
				IntPtr intPtr = (IntPtr)_MIClass modopt(System.Runtime.CompilerServices.IsConst)Pointer;
				classHandle = new ClassHandle(intPtr, false);
			}
			if (0 != num1)
			{
				num = 1;
			}
			else
			{
				num = 0;
			}
			int num2 = num;
			moreResults = num2;
			result = (MiResult)_MIResult;
			if (_MIInstance modopt(System.Runtime.CompilerServices.IsConst)Pointer != null)
			{
				IntPtr intPtr1 = (IntPtr)_MIInstance modopt(System.Runtime.CompilerServices.IsConst)Pointer;
				completionDetails = new InstanceHandle(intPtr1, false);
			}
			if (uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer != null)
			{
				IntPtr intPtr2 = (IntPtr)uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer;
				errorMessage = Marshal.PtrToStringUni(intPtr2);
			}
			return (MiResult)_MIResult modopt(System.Runtime.CompilerServices.CallConvCdecl);
			*/
		}
コード例 #5
0
ファイル: ApplicationMethods.cs プロジェクト: nickchal/pash
        internal static MiResult NewInstance(ApplicationHandle applicationHandle, string p1, object p2, out InstanceHandle instanceHandle)
        {
			NativeCimInstance instance = new NativeCimInstance();
			instance.CimClassName = p1;
			instance.ClassName = p1;
			instance.Properties = NativeCimPropertiesHelper.Serialize (new NativeCimProperties());
			instance.SystemProperties = NativeCimPropertiesHelper.Serialize (new NativeCimProperties());
			instance.Namespace = "root/cimv2";
			instance.ServerName = "localhost";
			instance.Qualifiers = NativeCimQualifiersHelper.Serialize (new NativeCimQualifiers());
			IntPtr instancePtr = CimNativeApi.MarshalledObject.Create<NativeCimInstance>(instance);
			instanceHandle = new InstanceHandle(instancePtr, false);
			return MiResult.OK;
        }
コード例 #6
0
ファイル: InstanceMethods.cs プロジェクト: nickchal/pash
		public static MiResult GetElementAt_GetType (InstanceHandle handle, int _index, out MiType miType)
		{
			NativeCimInstance instance = CimNativeApi.MarshalledObject.FromPointer<NativeCimInstance> (handle.DangerousGetHandle ());
			var properties = NativeCimPropertiesHelper.Deserialize (PropertiesOrSystem(instance));
			int i = 0;
			miType = MiType.Boolean;
			foreach (var element in properties) {
				if (i == _index) {
					Type type = element.Value.GetType ();
					miType = CimConverter.GetCimType (type).ToMiType();
					break;
				}
				i++;
			}
			return MiResult.OK;
		}
コード例 #7
0
ファイル: SharedInstanceHandle.cs プロジェクト: nickchal/pash
		internal SharedInstanceHandle(InstanceHandle handle)
		{
			this._numberOfReferencesLock = new object();
			this._numberOfReferences = 1;
			this._handle = handle;
		}
コード例 #8
0
ファイル: SessionMethods.cs プロジェクト: nickchal/pash
		internal static unsafe void GetInstance(SessionHandle sessionHandle, MiOperationFlags operationFlags, OperationOptionsHandle operationOptionsHandle, string namespaceName, InstanceHandle instanceHandle, OperationCallbacks operationCallbacks, out OperationHandle operationHandle)
		{
			IntPtr sessionPtr = sessionHandle.DangerousGetHandle ();
			NativeDestinationOptions options = CimNativeApi.GetDestinationOptions (sessionHandle);
			operationHandle = new OperationHandle(IntPtr.Zero, true);
			operationHandle.SetOperationCallback(IntPtr.Zero.ToPointer ());
			NativeCimInstance obj = new NativeCimInstance();
			obj.Namespace = namespaceName;
			obj.ServerName = "localhost";
			obj.SessionHandle = sessionPtr;
			var properties = new NativeCimProperties();
			//properties.Keys = new string[] { "PSShowComputerName", "Name", "Status", "PSComputerName" };
			//properties.Values = new object[] { true, "test1", "Started", "localhost" };
			obj.Properties = NativeCimPropertiesHelper.Serialize (properties);
			IntPtr instancePtr = (IntPtr)CimNativeApi.MarshalledObject.Create<NativeCimInstance>(obj);
			InstanceHandle resultHandle = new InstanceHandle(instancePtr, true);
			operationCallbacks.InstanceResultCallback.Invoke (new OperationCallbackProcessingContext(operationCallbacks.ManagedOperationContext), operationHandle, resultHandle, false, MiResult.OK, null, null);

			/*
			_MI_OperationCallbacks _MIOperationCallback;
			_MI_OperationCallbacks* _MIOperationCallbacksPointer;
			DangerousHandleAccessor dangerousHandleAccessor = null;
			DangerousHandleAccessor dangerousHandleAccessor1 = null;
			DangerousHandleAccessor dangerousHandleAccessor2 = null;
			operationHandle = null;
			DangerousHandleAccessor dangerousHandleAccessor = new DangerousHandleAccessor(sessionHandle);
			try
			{
				dangerousHandleAccessor = dangerousHandleAccessor;
				DangerousHandleAccessor dangerousHandleAccessor1 = new DangerousHandleAccessor(instanceHandle);
				try
				{
					dangerousHandleAccessor1 = dangerousHandleAccessor1;
					DangerousHandleAccessor dangerousHandleAccessor2 = new DangerousHandleAccessor(operationOptionsHandle);
					try
					{
						dangerousHandleAccessor2 = dangerousHandleAccessor2;
						_MI_OperationOptions* _MIOperationOptionsPointer = (_MI_OperationOptions*)((void*)dangerousHandleAccessor2.DangerousGetHandle());
						&_MIOperationCallback;
						0;
						bool flag = operationCallbacks.SetMiOperationCallbacks(ref _MIOperationCallback);
						IntPtr hGlobalUni = Marshal.StringToHGlobalUni(namespaceName);
						IntPtr intPtr = hGlobalUni;
						try
						{
							_MI_Operation* _MIOperationPointer = (_MI_Operation*)<Module>.Microsoft.Management.Infrastructure.Native.MI_CLI_malloc_core((long)24);
							void* voidPointer = (void*)dangerousHandleAccessor.DangerousGetHandle();
							if (flag)
							{
								_MIOperationCallbacksPointer = &_MIOperationCallback;
							}
							else
							{
								_MIOperationCallbacksPointer = (_MI_OperationCallbacks*)((long)0);
							}
							_MI_OperationCallbacks* _MIOperationCallbacksPointer1 = _MIOperationCallbacksPointer;
							IntPtr intPtr1 = dangerousHandleAccessor1.DangerousGetHandle();
							<Module>.?A0xf16864c4.MI_Session_GetInstance((_MI_Session*)voidPointer, operationFlags, _MIOperationOptionsPointer, (void*)hGlobalUni, (void*)intPtr1, _MIOperationCallbacksPointer1, _MIOperationPointer);
							OperationHandle operationHandle = new OperationHandle((IntPtr)_MIOperationPointer, true);
							operationHandle = operationHandle;
							operationHandle.SetOperationCallback((long)_MIOperationCallback);
						}
						finally
						{
							if (intPtr != IntPtr.Zero)
							{
								Marshal.FreeHGlobal(intPtr);
							}
						}
					}
					dangerousHandleAccessor2.Dispose();
				}
				dangerousHandleAccessor1.Dispose();
			}
			dangerousHandleAccessor.Dispose();
			*/
		}
コード例 #9
0
ファイル: InstanceMethods.cs プロジェクト: nickchal/pash
		public static MiResult ClearElementAt (InstanceHandle handle, int _index)
		{
			NativeCimInstance instance = CimNativeApi.MarshalledObject.FromPointer<NativeCimInstance> (handle.DangerousGetHandle ());
			var properties = NativeCimPropertiesHelper.Deserialize (PropertiesOrSystem(instance));
			properties.ElementAt(_index).Value = null; 
			instance.Properties = NativeCimPropertiesHelper.Serialize (properties);
			handle.DangerousSetHandle ((IntPtr)CimNativeApi.MarshalledObject.Create<NativeCimInstance>(instance));
			return MiResult.OK;
		}
コード例 #10
0
ファイル: InstanceMethods.cs プロジェクト: nickchal/pash
		public static MiResult GetElementCount (InstanceHandle handle, out int num)
		{
			NativeCimInstance instance = CimNativeApi.MarshalledObject.FromPointer<NativeCimInstance> (handle.DangerousGetHandle ());
			var properties = NativeCimPropertiesHelper.Deserialize (PropertiesOrSystem(instance));
			num = properties.Count;
			return MiResult.OK;
		}
コード例 #11
0
ファイル: CimInstance.cs プロジェクト: nickchal/pash
		internal CimInstance(InstanceHandle handle, SharedInstanceHandle parentHandle)
		{
			this._CimSessionInstanceID = Guid.Empty;
			this._myHandle = new SharedInstanceHandle(handle, parentHandle);
		}
コード例 #12
0
ファイル: SessionMethods.cs プロジェクト: nickchal/pash
		internal static unsafe void CreateInstance(SessionHandle sessionHandle, MiOperationFlags operationFlags, OperationOptionsHandle operationOptionsHandle, string namespaceName, InstanceHandle instanceHandle, OperationCallbacks operationCallbacks, out OperationHandle operationHandle)
		{
			IntPtr sessionPtr = sessionHandle.DangerousGetHandle ();
			NativeDestinationOptions options = CimNativeApi.GetDestinationOptions (sessionHandle);
			operationHandle = new OperationHandle (IntPtr.Zero, true);
			operationHandle.SetOperationCallback (IntPtr.Zero.ToPointer ());
			var currentContext = new OperationCallbackProcessingContext (operationCallbacks.ManagedOperationContext);

			/*
			_MI_OperationCallbacks _MIOperationCallback;
			_MI_OperationCallbacks* _MIOperationCallbacksPointer;
			DangerousHandleAccessor dangerousHandleAccessor = null;
			DangerousHandleAccessor dangerousHandleAccessor1 = null;
			DangerousHandleAccessor dangerousHandleAccessor2 = null;
			operationHandle = null;
			DangerousHandleAccessor dangerousHandleAccessor = new DangerousHandleAccessor(sessionHandle);
			try
			{
				dangerousHandleAccessor = dangerousHandleAccessor;
				DangerousHandleAccessor dangerousHandleAccessor1 = new DangerousHandleAccessor(instanceHandle);
				try
				{
					dangerousHandleAccessor1 = dangerousHandleAccessor1;
					DangerousHandleAccessor dangerousHandleAccessor2 = new DangerousHandleAccessor(operationOptionsHandle);
					try
					{
						dangerousHandleAccessor2 = dangerousHandleAccessor2;
						_MI_OperationOptions* _MIOperationOptionsPointer = (_MI_OperationOptions*)((void*)dangerousHandleAccessor2.DangerousGetHandle());
						&_MIOperationCallback;
						0;
						bool flag = operationCallbacks.SetMiOperationCallbacks(ref _MIOperationCallback);
						IntPtr hGlobalUni = Marshal.StringToHGlobalUni(namespaceName);
						IntPtr intPtr = hGlobalUni;
						try
						{
							_MI_Operation* _MIOperationPointer = (_MI_Operation*)<Module>.Microsoft.Management.Infrastructure.Native.MI_CLI_malloc_core((long)24);
							void* voidPointer = (void*)dangerousHandleAccessor.DangerousGetHandle();
							if (flag)
							{
								_MIOperationCallbacksPointer = &_MIOperationCallback;
							}
							else
							{
								_MIOperationCallbacksPointer = (_MI_OperationCallbacks*)((long)0);
							}
							_MI_OperationCallbacks* _MIOperationCallbacksPointer1 = _MIOperationCallbacksPointer;
							IntPtr intPtr1 = dangerousHandleAccessor1.DangerousGetHandle();
							<Module>.?A0xf16864c4.MI_Session_CreateInstance((_MI_Session*)voidPointer, operationFlags, _MIOperationOptionsPointer, (void*)hGlobalUni, (void*)intPtr1, _MIOperationCallbacksPointer1, _MIOperationPointer);
							OperationHandle operationHandle = new OperationHandle((IntPtr)_MIOperationPointer, true);
							operationHandle = operationHandle;
							operationHandle.SetOperationCallback((long)_MIOperationCallback);
						}
						finally
						{
							if (intPtr != IntPtr.Zero)
							{
								Marshal.FreeHGlobal(intPtr);
							}
						}
					}
					dangerousHandleAccessor2.Dispose();
				}
				dangerousHandleAccessor1.Dispose();
			}
			dangerousHandleAccessor.Dispose();
			*/
		}
コード例 #13
0
ファイル: SessionMethods.cs プロジェクト: nickchal/pash
		internal static unsafe void QueryInstances (SessionHandle sessionHandle, MiOperationFlags operationFlags, OperationOptionsHandle operationOptionsHandle, string namespaceName, string queryDialect, string queryExpression, bool keysOnly, OperationCallbacks operationCallbacks, out OperationHandle operationHandle)
		{
			IntPtr sessionPtr = sessionHandle.DangerousGetHandle ();
			NativeDestinationOptions options = CimNativeApi.GetDestinationOptions (sessionHandle);
			operationHandle = new OperationHandle (IntPtr.Zero, true);
			operationHandle.SetOperationCallback (IntPtr.Zero.ToPointer ());
			int i = 0;
			var instances = CimNativeApi.QueryInstances (options, namespaceName, queryDialect, queryExpression, keysOnly);
			var currentContext = new OperationCallbackProcessingContext (operationCallbacks.ManagedOperationContext);
			int count = instances.Count ();
			if (count > 0) {
				foreach (var obj in instances) {
					obj.ClassName = null;
					obj.SessionHandle = sessionPtr;
					IntPtr instancePtr = (IntPtr)CimNativeApi.MarshalledObject.Create<NativeCimInstance> (obj);
					InstanceHandle resultHandle = new InstanceHandle (instancePtr, true);
					operationCallbacks.InstanceResultCallback.Invoke (currentContext, operationHandle, resultHandle, i < count - 1, MiResult.OK, null, null);
					i++;
				}
			} else {
				InstanceHandle resultHandle = new InstanceHandle (IntPtr.Zero, true);
				operationCallbacks.InstanceResultCallback.Invoke (currentContext, operationHandle, resultHandle, false, MiResult.NOT_FOUND, null, null);

			}
			/*
			_MI_OperationCallbacks _MIOperationCallback;
			_MI_OperationCallbacks* _MIOperationCallbacksPointer;
			DangerousHandleAccessor dangerousHandleAccessor = null;
			DangerousHandleAccessor dangerousHandleAccessor1 = null;
			operationHandle = null;
			DangerousHandleAccessor dangerousHandleAccessor = new DangerousHandleAccessor(sessionHandle);
			try
			{
				dangerousHandleAccessor = dangerousHandleAccessor;
				DangerousHandleAccessor dangerousHandleAccessor1 = new DangerousHandleAccessor(operationOptionsHandle);
				try
				{
					dangerousHandleAccessor1 = dangerousHandleAccessor1;
					_MI_OperationOptions* _MIOperationOptionsPointer = (_MI_OperationOptions*)((void*)dangerousHandleAccessor1.DangerousGetHandle());
					&_MIOperationCallback;
					0;
					bool flag = operationCallbacks.SetMiOperationCallbacks(ref _MIOperationCallback);
					IntPtr hGlobalUni = Marshal.StringToHGlobalUni(namespaceName);
					IntPtr intPtr = hGlobalUni;
					try
					{
						IntPtr hGlobalUni1 = Marshal.StringToHGlobalUni(queryDialect);
						IntPtr intPtr1 = hGlobalUni1;
						try
						{
							IntPtr hGlobalUni2 = Marshal.StringToHGlobalUni(queryExpression);
							IntPtr intPtr2 = hGlobalUni2;
							try
							{
								_MI_Operation* _MIOperationPointer = (_MI_Operation*)<Module>.Microsoft.Management.Infrastructure.Native.MI_CLI_malloc_core((long)24);
								void* voidPointer = (void*)dangerousHandleAccessor.DangerousGetHandle();
								if (flag)
								{
									_MIOperationCallbacksPointer = &_MIOperationCallback;
								}
								else
								{
									_MIOperationCallbacksPointer = (_MI_OperationCallbacks*)((long)0);
								}
								_MI_OperationCallbacks* _MIOperationCallbacksPointer1 = _MIOperationCallbacksPointer;
								<Module>.?A0xf16864c4.MI_Session_QueryInstances((_MI_Session*)voidPointer, operationFlags, _MIOperationOptionsPointer, (void*)hGlobalUni, (void*)hGlobalUni1, (void*)hGlobalUni2, _MIOperationCallbacksPointer1, _MIOperationPointer);
								OperationHandle operationHandle = new OperationHandle((IntPtr)_MIOperationPointer, true);
								operationHandle = operationHandle;
								operationHandle.SetOperationCallback((long)_MIOperationCallback);
							}
							finally
							{
								if (intPtr2 != IntPtr.Zero)
								{
									Marshal.FreeHGlobal(intPtr2);
								}
							}
						}
						finally
						{
							if (intPtr1 != IntPtr.Zero)
							{
								Marshal.FreeHGlobal(intPtr1);
							}
						}
					}
					finally
					{
						if (intPtr != IntPtr.Zero)
						{
							Marshal.FreeHGlobal(intPtr);
						}
					}
				}
				dangerousHandleAccessor1.Dispose();
			}
			dangerousHandleAccessor.Dispose();
			*/
		}
コード例 #14
0
ファイル: SessionMethods.cs プロジェクト: nickchal/pash
		internal static unsafe void Invoke(SessionHandle sessionHandle, MiOperationFlags operationFlags, OperationOptionsHandle operationOptionsHandle, string namespaceName, string className, string methodName, InstanceHandle instanceHandleForTargetOfInvocation, InstanceHandle instanceHandleForMethodParameters, OperationCallbacks operationCallbacks, out OperationHandle operationHandle)
		{
			NativeDestinationOptions options = CimNativeApi.GetDestinationOptions (sessionHandle);
			operationHandle = new OperationHandle(IntPtr.Zero, true);
			operationHandle.SetOperationCallback(IntPtr.Zero.ToPointer ());
			NativeCimInstance instance = instanceHandleForTargetOfInvocation == null ? new NativeCimInstance() : CimNativeApi.MarshalledObject.FromPointer<NativeCimInstance>(instanceHandleForTargetOfInvocation.DangerousGetHandle ());
			NativeCimInstance inSignature = instanceHandleForMethodParameters == null ? new NativeCimInstance() :  CimNativeApi.MarshalledObject.FromPointer<NativeCimInstance>(instanceHandleForMethodParameters.DangerousGetHandle ());
			NativeCimInstance result = CimNativeApi.InvokeMethod(options, namespaceName, className, methodName, instance, inSignature);
			IntPtr instancePtr = (IntPtr)CimNativeApi.MarshalledObject.Create<NativeCimInstance>(result);
			InstanceHandle resultHandle = new InstanceHandle(instancePtr, true);


			operationCallbacks.InstanceResultCallback.Invoke (new OperationCallbackProcessingContext(operationCallbacks.ManagedOperationContext), operationHandle, resultHandle, false, MiResult.OK, null, null);


			/*
			_MI_OperationCallbacks _MIOperationCallback;
			_MI_OperationCallbacks* _MIOperationCallbacksPointer;
			DangerousHandleAccessor dangerousHandleAccessor = null;
			DangerousHandleAccessor dangerousHandleAccessor1 = null;
			DangerousHandleAccessor dangerousHandleAccessor2 = null;
			DangerousHandleAccessor dangerousHandleAccessor3 = null;
			operationHandle = null;
			DangerousHandleAccessor dangerousHandleAccessor = new DangerousHandleAccessor(sessionHandle);
			try
			{
				dangerousHandleAccessor = dangerousHandleAccessor;
				DangerousHandleAccessor dangerousHandleAccessor1 = new DangerousHandleAccessor(operationOptionsHandle);
				try
				{
					dangerousHandleAccessor1 = dangerousHandleAccessor1;
					_MI_OperationOptions* _MIOperationOptionsPointer = (_MI_OperationOptions*)((void*)dangerousHandleAccessor1.DangerousGetHandle());
					&_MIOperationCallback;
					0;
					bool flag = operationCallbacks.SetMiOperationCallbacks(ref _MIOperationCallback);
					IntPtr hGlobalUni = Marshal.StringToHGlobalUni(namespaceName);
					IntPtr intPtr = hGlobalUni;
					try
					{
						IntPtr hGlobalUni1 = Marshal.StringToHGlobalUni(className);
						IntPtr intPtr1 = hGlobalUni1;
						try
						{
							IntPtr hGlobalUni2 = Marshal.StringToHGlobalUni(methodName);
							IntPtr intPtr2 = hGlobalUni2;
							try
							{
								_MI_Operation* _MIOperationPointer = (_MI_Operation*)<Module>.Microsoft.Management.Infrastructure.Native.MI_CLI_malloc_core((long)24);
								DangerousHandleAccessor dangerousHandleAccessor2 = new DangerousHandleAccessor(instanceHandleForTargetOfInvocation);
								try
								{
									dangerousHandleAccessor2 = dangerousHandleAccessor2;
									_MI_Instance* _MIInstancePointer = (_MI_Instance*)((void*)dangerousHandleAccessor2.DangerousGetHandle());
									DangerousHandleAccessor dangerousHandleAccessor3 = new DangerousHandleAccessor(instanceHandleForMethodParameters);
									try
									{
										dangerousHandleAccessor3 = dangerousHandleAccessor3;
										_MI_Instance* _MIInstancePointer1 = (_MI_Instance*)((void*)dangerousHandleAccessor3.DangerousGetHandle());
										void* voidPointer = (void*)dangerousHandleAccessor.DangerousGetHandle();
										if (flag)
										{
											_MIOperationCallbacksPointer = &_MIOperationCallback;
										}
										else
										{
											_MIOperationCallbacksPointer = (_MI_OperationCallbacks*)((long)0);
										}
										_MI_OperationCallbacks* _MIOperationCallbacksPointer1 = _MIOperationCallbacksPointer;
										<Module>.?A0xf16864c4.MI_Session_Invoke((_MI_Session*)voidPointer, operationFlags, _MIOperationOptionsPointer, (void*)hGlobalUni, (void*)hGlobalUni1, (void*)hGlobalUni2, _MIInstancePointer, _MIInstancePointer1, _MIOperationCallbacksPointer1, _MIOperationPointer);
										OperationHandle operationHandle = new OperationHandle((IntPtr)_MIOperationPointer, true);
										operationHandle = operationHandle;
										operationHandle.SetOperationCallback((long)_MIOperationCallback);
									}
									dangerousHandleAccessor3.Dispose();
								}
								dangerousHandleAccessor2.Dispose();
							}
							finally
							{
								if (intPtr2 != IntPtr.Zero)
								{
									Marshal.FreeHGlobal(intPtr2);
								}
							}
						}
						finally
						{
							if (intPtr1 != IntPtr.Zero)
							{
								Marshal.FreeHGlobal(intPtr1);
							}
						}
					}
					finally
					{
						if (intPtr != IntPtr.Zero)
						{
							Marshal.FreeHGlobal(intPtr);
						}
					}
				}
				dangerousHandleAccessor1.Dispose();
			}
			dangerousHandleAccessor.Dispose();
			*/
		}
コード例 #15
0
ファイル: OperationMethods.cs プロジェクト: nickchal/pash
		internal static unsafe MiResult GetIndication(OperationHandle operationHandle, out InstanceHandle instanceHandle, out string bookmark, out string machineID, out bool moreResults, out MiResult result, out string errorMessage, out InstanceHandle completionDetails)
		{
			moreResults = false;
			machineID = System.Net.Dns.GetHostName ();
			errorMessage = "";
			bookmark = null;
			instanceHandle = null;
			result = MiResult.OK;
			instanceHandle = null;
			completionDetails = null;
			return MiResult.OK;
			/*
			int num;
			instanceHandle = null;
			moreResults = false;
			result = MiResult.OK;
			errorMessage = null;
			bookmark = null;
			machineID = null;
			completionDetails = null;
			_MI_Instance modopt(System.Runtime.CompilerServices.IsConst)* _MIInstance modopt(System.Runtime.CompilerServices.IsConst)Pointer = (_MI_Instance modopt(System.Runtime.CompilerServices.IsConst)*)((long)0);
			UInt16 modopt(System.Runtime.CompilerServices.IsConst)* uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer = (UInt16 modopt(System.Runtime.CompilerServices.IsConst)*)((long)0);
			UInt16 modopt(System.Runtime.CompilerServices.IsConst)* uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer1 = (UInt16 modopt(System.Runtime.CompilerServices.IsConst)*)((long)0);
			byte num1 = 0;
			_MI_Result _MIResult = 0;
			UInt16 modopt(System.Runtime.CompilerServices.IsConst)* uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer2 = (UInt16 modopt(System.Runtime.CompilerServices.IsConst)*)((long)0);
			_MI_Instance modopt(System.Runtime.CompilerServices.IsConst)* _MIInstance modopt(System.Runtime.CompilerServices.IsConst)Pointer1 = (_MI_Instance modopt(System.Runtime.CompilerServices.IsConst)*)((long)0);
			_MI_Result modopt(System.Runtime.CompilerServices.CallConvCdecl) _MIResult modopt(System.Runtime.CompilerServices.CallConvCdecl) = (_MI_Result)<Module>.?A0xf5a90918.MI_Operation_GetIndication((void*)operationHandle.DangerousGetHandle(), ref (_MI_Instance modopt(System.Runtime.CompilerServices.IsConst)*)((long)0), ref (UInt16 modopt(System.Runtime.CompilerServices.IsConst)*)((long)0), ref (UInt16 modopt(System.Runtime.CompilerServices.IsConst)*)((long)0), ref num1, (_MI_Result*)(&_MIResult), ref (UInt16 modopt(System.Runtime.CompilerServices.IsConst)*)((long)0), ref (_MI_Instance modopt(System.Runtime.CompilerServices.IsConst)*)((long)0));
			if ((_MI_Instance modopt(System.Runtime.CompilerServices.IsConst)*)((long)0) != null)
			{
				IntPtr intPtr = (IntPtr)_MIInstance modopt(System.Runtime.CompilerServices.IsConst)Pointer;
				instanceHandle = new InstanceHandle(intPtr, false);
			}
			if (0 != num1)
			{
				num = 1;
			}
			else
			{
				num = 0;
			}
			int num2 = num;
			moreResults = num2;
			result = (MiResult)_MIResult;
			if (_MIInstance modopt(System.Runtime.CompilerServices.IsConst)Pointer1 != null)
			{
				IntPtr intPtr1 = (IntPtr)_MIInstance modopt(System.Runtime.CompilerServices.IsConst)Pointer1;
				completionDetails = new InstanceHandle(intPtr1, false);
			}
			if (uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer2 != null)
			{
				IntPtr intPtr2 = (IntPtr)uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer2;
				errorMessage = Marshal.PtrToStringUni(intPtr2);
			}
			if (uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer != null)
			{
				IntPtr intPtr3 = (IntPtr)uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer;
				bookmark = Marshal.PtrToStringUni(intPtr3);
			}
			if (uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer1 != null)
			{
				IntPtr intPtr4 = (IntPtr)uInt16 modopt(System.Runtime.CompilerServices.IsConst)Pointer1;
				machineID = Marshal.PtrToStringUni(intPtr4);
			}
			return (MiResult)_MIResult modopt(System.Runtime.CompilerServices.CallConvCdecl);
			*/
		}
コード例 #16
0
ファイル: InstanceMethods.cs プロジェクト: nickchal/pash
		public static MiResult AddElement (InstanceHandle handle, string name, object obj, object par, MiFlags miFlags)
		{
			NativeCimInstance instance = CimNativeApi.MarshalledObject.FromPointer<NativeCimInstance>(handle.DangerousGetHandle ());
			NativeCimProperties properties = NativeCimPropertiesHelper.Deserialize (instance.Properties);

			CimType type = CimConverter.GetCimType (obj.GetType ());
			properties.Add (new NativeCimProperty { Name = name, Type = type, Origin = "client", IsArray = false, IsLocal = false, Value = obj });
			instance.Properties = NativeCimPropertiesHelper.Serialize (properties);
			handle.DangerousSetHandle ((IntPtr)CimNativeApi.MarshalledObject.Create<NativeCimInstance>(instance));
			return MiResult.OK;
		}
コード例 #17
0
ファイル: InstanceMethods.cs プロジェクト: nickchal/pash
		public static MiResult GetElement_GetIndex (InstanceHandle handle, string propertyName, out int num)
		{
			NativeCimInstance instance = CimNativeApi.MarshalledObject.FromPointer<NativeCimInstance> (handle.DangerousGetHandle ());
			var properties = NativeCimPropertiesHelper.Deserialize (PropertiesOrSystem(instance));
			num = -1;
			int i = 0;
			foreach(var element in properties) {

				if (element.Name == propertyName)
				{
					num = i;
					break;
				}
				i++;
			}
			return MiResult.OK;
		}
コード例 #18
0
ファイル: CimOperationOptions.cs プロジェクト: nickchal/pash
        internal void WriteErrorCallbackInternal(OperationCallbackProcessingContext callbackProcessingContext, OperationHandle operationHandle, InstanceHandle instanceHandle, out MIResponseType response)
        {
            response = MIResponseType.MIResponseTypeYes;
            if (this._writeErrorCallback != null)
            {
                CimInstance cimInstance = null;
                using (cimInstance)
                {
                    if (instanceHandle != null)
                    {
						cimInstance = new CimInstance(instanceHandle, null);
                        //CimAsyncCallbacksReceiverBase managedOperationContext = (CimAsyncCallbacksReceiverBase)callbackProcessingContext.ManagedOperationContext;
                        CimResponseType userResponse = CimResponseType.None;
                        //managedOperationContext.CallIntoUserCallback(callbackProcessingContext, () => userResponse = this._writeErrorCallback(cimInstance), false, false);
                        response = (MIResponseType)userResponse;
                    }
                }
            }
        }
コード例 #19
0
ファイル: SessionMethods.cs プロジェクト: nickchal/pash
		internal static unsafe void ReferenceInstances(SessionHandle sessionHandle, MiOperationFlags operationFlags, OperationOptionsHandle operationOptionsHandle, string namespaceName, InstanceHandle sourceInstance, string associationClassName, string sourceRole, bool keysOnly, OperationCallbacks operationCallbacks, out OperationHandle operationHandle)
		{
			operationHandle = null;
			/*
			_MI_OperationCallbacks _MIOperationCallback;
			_MI_OperationCallbacks* _MIOperationCallbacksPointer;
			DangerousHandleAccessor dangerousHandleAccessor = null;
			DangerousHandleAccessor dangerousHandleAccessor1 = null;
			DangerousHandleAccessor dangerousHandleAccessor2 = null;
			operationHandle = null;
			DangerousHandleAccessor dangerousHandleAccessor = new DangerousHandleAccessor(sessionHandle);
			try
			{
				dangerousHandleAccessor = dangerousHandleAccessor;
				DangerousHandleAccessor dangerousHandleAccessor1 = new DangerousHandleAccessor(sourceInstance);
				try
				{
					dangerousHandleAccessor1 = dangerousHandleAccessor1;
					DangerousHandleAccessor dangerousHandleAccessor2 = new DangerousHandleAccessor(operationOptionsHandle);
					try
					{
						dangerousHandleAccessor2 = dangerousHandleAccessor2;
						_MI_OperationOptions* _MIOperationOptionsPointer = (_MI_OperationOptions*)((void*)dangerousHandleAccessor2.DangerousGetHandle());
						&_MIOperationCallback;
						0;
						bool flag = operationCallbacks.SetMiOperationCallbacks(ref _MIOperationCallback);
						IntPtr hGlobalUni = Marshal.StringToHGlobalUni(namespaceName);
						IntPtr intPtr = hGlobalUni;
						try
						{
							IntPtr hGlobalUni1 = Marshal.StringToHGlobalUni(associationClassName);
							IntPtr intPtr1 = hGlobalUni1;
							try
							{
								IntPtr hGlobalUni2 = Marshal.StringToHGlobalUni(sourceRole);
								IntPtr intPtr2 = hGlobalUni2;
								try
								{
									_MI_Operation* _MIOperationPointer = (_MI_Operation*)<Module>.Microsoft.Management.Infrastructure.Native.MI_CLI_malloc_core((long)24);
									void* voidPointer = (void*)dangerousHandleAccessor.DangerousGetHandle();
									if (flag)
									{
										_MIOperationCallbacksPointer = &_MIOperationCallback;
									}
									else
									{
										_MIOperationCallbacksPointer = (_MI_OperationCallbacks*)((long)0);
									}
									_MI_OperationCallbacks* _MIOperationCallbacksPointer1 = _MIOperationCallbacksPointer;
									IntPtr intPtr3 = dangerousHandleAccessor1.DangerousGetHandle();
									<Module>.?A0xf16864c4.MI_Session_ReferenceInstances((_MI_Session*)voidPointer, operationFlags, _MIOperationOptionsPointer, (void*)hGlobalUni, (void*)intPtr3, (void*)hGlobalUni1, (void*)hGlobalUni2, keysOnly, _MIOperationCallbacksPointer1, _MIOperationPointer);
									OperationHandle operationHandle = new OperationHandle((IntPtr)_MIOperationPointer, true);
									operationHandle = operationHandle;
									operationHandle.SetOperationCallback((long)_MIOperationCallback);
								}
								finally
								{
									if (intPtr2 != IntPtr.Zero)
									{
										Marshal.FreeHGlobal(intPtr2);
									}
								}
							}
							finally
							{
								if (intPtr1 != IntPtr.Zero)
								{
									Marshal.FreeHGlobal(intPtr1);
								}
							}
						}
						finally
						{
							if (intPtr != IntPtr.Zero)
							{
								Marshal.FreeHGlobal(intPtr);
							}
						}
					}
					dangerousHandleAccessor2.Dispose();
				}
				dangerousHandleAccessor1.Dispose();
			}
			dangerousHandleAccessor.Dispose();
			*/
		}
コード例 #20
0
ファイル: ApplicationMethods.cs プロジェクト: nickchal/pash
        internal static void GetCimErrorFromMiResult(MiResult errorCode, string errorMessage, out InstanceHandle errorDetailsHandle)
        {
			errorDetailsHandle = new InstanceHandle(IntPtr.Zero, false);
        }
コード例 #21
0
ファイル: InstanceMethods.cs プロジェクト: nickchal/pash
		public static MiResult SetElementAt_SetNotModifiedFlag (InstanceHandle handle, int _index, bool flag)
		{
			return MiResult.OK;
		}
コード例 #22
0
ファイル: InstanceMethods.cs プロジェクト: nickchal/pash
		public static MiResult GetElementAt_GetFlags (InstanceHandle handle, int _index, out MiFlags miFlag)
		{
			miFlag = MiFlags.PROPERTY;
			return MiResult.OK;
		}
コード例 #23
0
ファイル: InstanceMethods.cs プロジェクト: nickchal/pash
		public static MiResult GetElementAt_GetName (InstanceHandle handle, int _index, out string str)
		{
			NativeCimInstance instance = CimNativeApi.MarshalledObject.FromPointer<NativeCimInstance> (handle.DangerousGetHandle ());
			var properties = NativeCimPropertiesHelper.Deserialize (PropertiesOrSystem(instance));
			int i = 0;
			str = null;
			foreach (var element in properties) {
				if (i == _index) {
					str = element.Name;
					break;
				}
				i++;
			}
			return MiResult.OK;
		}
コード例 #24
0
		internal CimSubscriptionResult(InstanceHandle handle, string bookmark, string machineId)
		{
			this._resultInstance = new CimInstance(handle, null);
			this._bookmark = bookmark;
			this._machineId = machineId;
		}
コード例 #25
0
ファイル: InstanceMethods.cs プロジェクト: nickchal/pash
		public static MiResult GetElementAt_GetValue (InstanceHandle handle, int _index, out object obj)
		{
			NativeCimInstance instance = CimNativeApi.MarshalledObject.FromPointer<NativeCimInstance> (handle.DangerousGetHandle ());
			obj = null;
			if (_index != -1) {
				var properties = NativeCimPropertiesHelper.Deserialize (PropertiesOrSystem(instance));
				var element = properties.ElementAtOrDefault (_index);
				obj = element.Value;
			}
			return MiResult.OK;
		}
コード例 #26
0
ファイル: CimInstance.cs プロジェクト: nickchal/pash
		internal static object ConvertToNativeLayer(object value, CimType cimType)
		{
			CimInstance cimInstance = value as CimInstance;
			if (cimInstance == null)
			{
				CimInstance[] cimInstanceArray = value as CimInstance[];
				if (cimInstanceArray == null)
				{
					if (cimType != CimType.Unknown)
					{
						return CimProperty.ConvertToNativeLayer(value, cimType);
					}
					else
					{
						return value;
					}
				}
				else
				{
					InstanceHandle[] instanceHandle = new InstanceHandle[(int)cimInstanceArray.Length];
					for (int i = 0; i < (int)cimInstanceArray.Length; i++)
					{
						CimInstance cimInstance1 = cimInstanceArray[i];
						if (cimInstance1 != null)
						{
							instanceHandle[i] = cimInstance1.InstanceHandle;
						}
						else
						{
							instanceHandle[i] = null;
						}
					}
					return instanceHandle;
				}
			}
			else
			{
				return cimInstance.InstanceHandle;
			}
		}
コード例 #27
0
ファイル: SessionMethods.cs プロジェクト: nickchal/pash
		internal static unsafe void TestConnection(SessionHandle sessionHandle, MiOperationFlags operationFlags, OperationCallbacks operationCallbacks, out OperationHandle operationHandle)
		{
			operationHandle = new OperationHandle(IntPtr.Zero, true);
			operationHandle.SetOperationCallback(IntPtr.Zero.ToPointer ());
			NativeCimSession session = CimNativeApi.MarshalledObject.FromPointer<NativeCimSession>(sessionHandle.DangerousGetHandle ());
			IntPtr instancePtr = (IntPtr)CimNativeApi.MarshalledObject.Create<NativeCimSession>(session);
			InstanceHandle testInstance = new InstanceHandle(instancePtr, false);
			var context = new OperationCallbackProcessingContext(operationCallbacks.ManagedOperationContext);
			operationCallbacks.InstanceResultCallback.Invoke (context, operationHandle, testInstance, false, MiResult.OK, null, null);

			/*
			_MI_OperationCallbacks _MIOperationCallback;
			_MI_OperationCallbacks* _MIOperationCallbacksPointer;
			DangerousHandleAccessor dangerousHandleAccessor = null;
			DangerousHandleAccessor dangerousHandleAccessor1 = null;
			operationHandle = null;
			DangerousHandleAccessor dangerousHandleAccessor = new DangerousHandleAccessor(sessionHandle);
			try
			{
				dangerousHandleAccessor = dangerousHandleAccessor;
				&_MIOperationCallback;
				0;
				bool flag = operationCallbacks.SetMiOperationCallbacks(ref _MIOperationCallback);
				_MI_Operation* _MIOperationPointer = (_MI_Operation*)<Module>.Microsoft.Management.Infrastructure.Native.MI_CLI_malloc_core((long)24);
				void* voidPointer = (void*)dangerousHandleAccessor.DangerousGetHandle();
				if (flag)
				{
					_MIOperationCallbacksPointer = &_MIOperationCallback;
				}
				else
				{
					_MIOperationCallbacksPointer = (_MI_OperationCallbacks*)((long)0);
				}
				_MI_OperationCallbacks* _MIOperationCallbacksPointer1 = _MIOperationCallbacksPointer;
				<Module>.?A0xf16864c4.MI_Session_TestConnection((_MI_Session*)voidPointer, operationFlags, _MIOperationCallbacksPointer1, _MIOperationPointer);
				OperationHandle operationHandle = new OperationHandle((IntPtr)_MIOperationPointer, true);
				operationHandle = operationHandle;
				DangerousHandleAccessor dangerousHandleAccessor1 = new DangerousHandleAccessor(operationHandle);
				try
				{
					dangerousHandleAccessor1 = dangerousHandleAccessor1;
				}
				dangerousHandleAccessor1.Dispose();
			}
			dangerousHandleAccessor.Dispose();
			*/
		}