Esempio n. 1
0
        private bool RestartDevice(IntPtr hDevInfo, Native.SP_DEVINFO_DATA devInfoData)
        {
            int    szOfPcp;
            IntPtr ptrToPcp;
            int    szDevInfoData;
            IntPtr ptrToDevInfoData;

            Native.SP_PROPCHANGE_PARAMS pcp = new Native.SP_PROPCHANGE_PARAMS();
            pcp.ClassInstallHeader.cbSize          = Marshal.SizeOf(typeof(Native.SP_CLASSINSTALL_HEADER));
            pcp.ClassInstallHeader.InstallFunction = Native.DIF_PROPERTYCHANGE;
            pcp.StateChange = Native.DICS_PROPCHANGE;             // for reset
            pcp.Scope       = Native.DICS_FLAG_CONFIGSPECIFIC;
            pcp.HwProfile   = 0;

            szOfPcp  = Marshal.SizeOf(pcp);
            ptrToPcp = Marshal.AllocHGlobal(szOfPcp);
            Marshal.StructureToPtr(pcp, ptrToPcp, true);
            szDevInfoData    = Marshal.SizeOf(devInfoData);
            ptrToDevInfoData = Marshal.AllocHGlobal(szDevInfoData);
            Marshal.StructureToPtr(devInfoData, ptrToDevInfoData, true);

            bool rslt1 = Native.SetupDiSetClassInstallParams(hDevInfo, ptrToDevInfoData, ptrToPcp, Marshal.SizeOf(typeof(Native.SP_PROPCHANGE_PARAMS)));

            if (!rslt1)
            {
                throw new Exception("SetupDiSetClassInstallParams failed " + Native.GetLastError());
            }

            bool rstl2 = Native.SetupDiCallClassInstaller(Native.DIF_PROPERTYCHANGE, hDevInfo, ptrToDevInfoData);

            if (!rstl2)
            {
                throw new Exception("SetupDiCallClassInstaller failed" + Native.GetLastError());
            }

            if (rslt1 && rstl2)
            {
                return(true);
            }


            return(false);
        }
		private bool RestartDevice( IntPtr hDevInfo, Native.SP_DEVINFO_DATA devInfoData )
		{
			int szOfPcp;
			IntPtr ptrToPcp;
			int szDevInfoData;
			IntPtr ptrToDevInfoData;
			
			Native.SP_PROPCHANGE_PARAMS pcp = new Native.SP_PROPCHANGE_PARAMS();
			pcp.ClassInstallHeader.cbSize = Marshal.SizeOf(typeof(Native.SP_CLASSINSTALL_HEADER));
			pcp.ClassInstallHeader.InstallFunction = Native.DIF_PROPERTYCHANGE;
			pcp.StateChange = Native.DICS_PROPCHANGE; // for reset
			pcp.Scope = Native.DICS_FLAG_CONFIGSPECIFIC;
			pcp.HwProfile = 0;
			
			szOfPcp = Marshal.SizeOf(pcp);
			ptrToPcp = Marshal.AllocHGlobal(szOfPcp);
			Marshal.StructureToPtr(pcp, ptrToPcp, true);
			szDevInfoData = Marshal.SizeOf(devInfoData);
			ptrToDevInfoData = Marshal.AllocHGlobal(szDevInfoData);
			Marshal.StructureToPtr(devInfoData, ptrToDevInfoData, true);
			
			bool rslt1 = Native.SetupDiSetClassInstallParams(hDevInfo, ptrToDevInfoData, ptrToPcp, Marshal.SizeOf(typeof(Native.SP_PROPCHANGE_PARAMS)));
			
			if (!rslt1)
				throw new Exception("SetupDiSetClassInstallParams failed " + Native.GetLastError());
			
			bool rstl2 = Native.SetupDiCallClassInstaller(Native.DIF_PROPERTYCHANGE, hDevInfo, ptrToDevInfoData);

			if (!rstl2)
				throw new Exception("SetupDiCallClassInstaller failed" + Native.GetLastError());
			
			if (rslt1 && rstl2)
			{
				return true;
			}
			
			
			return false;
		}
		private bool EnableOrDisableDevice(IntPtr hDevInfo, Native.SP_DEVINFO_DATA devInfoData, bool bEnable)
		{
			try
			{
				//Marshalling vars
				int szOfPcp;
				IntPtr ptrToPcp;
				int szDevInfoData;
				IntPtr ptrToDevInfoData;

				Native.SP_PROPCHANGE_PARAMS pcp = new Native.SP_PROPCHANGE_PARAMS();
				if (bEnable)
				{
					pcp.ClassInstallHeader.cbSize = Marshal.SizeOf(typeof(Native.SP_CLASSINSTALL_HEADER));
					pcp.ClassInstallHeader.InstallFunction = Native.DIF_PROPERTYCHANGE;
					pcp.StateChange = Native.DICS_ENABLE;
					pcp.Scope = Native.DICS_FLAG_GLOBAL;
					pcp.HwProfile = 0;
					
					//Marshal the params
					szOfPcp = Marshal.SizeOf(pcp);
					ptrToPcp = Marshal.AllocHGlobal(szOfPcp);
					Marshal.StructureToPtr(pcp, ptrToPcp, true);
					szDevInfoData = Marshal.SizeOf(devInfoData);
					ptrToDevInfoData = Marshal.AllocHGlobal(szDevInfoData);

					if (Native.SetupDiSetClassInstallParams(hDevInfo, ptrToDevInfoData, ptrToPcp, Marshal.SizeOf(typeof(Native.SP_PROPCHANGE_PARAMS))))
					{
						Native.SetupDiCallClassInstaller(Native.DIF_PROPERTYCHANGE, hDevInfo, ptrToDevInfoData);
					}
					pcp.ClassInstallHeader.cbSize = Marshal.SizeOf(typeof(Native.SP_CLASSINSTALL_HEADER));
					pcp.ClassInstallHeader.InstallFunction = Native.DIF_PROPERTYCHANGE;
					pcp.StateChange = Native.DICS_ENABLE;
					pcp.Scope = Native.DICS_FLAG_CONFIGSPECIFIC;
					pcp.HwProfile = 0;
				}
				else
				{
					pcp.ClassInstallHeader.cbSize = Marshal.SizeOf(typeof(Native.SP_CLASSINSTALL_HEADER));
					pcp.ClassInstallHeader.InstallFunction = Native.DIF_PROPERTYCHANGE;
					pcp.StateChange = Native.DICS_DISABLE;
					pcp.Scope = Native.DICS_FLAG_CONFIGSPECIFIC;
					pcp.HwProfile = 0;
				}
				//Marshal the params
				szOfPcp = Marshal.SizeOf(pcp);
				ptrToPcp = Marshal.AllocHGlobal(szOfPcp);
				Marshal.StructureToPtr(pcp, ptrToPcp, true);
				szDevInfoData = Marshal.SizeOf(devInfoData);
				ptrToDevInfoData = Marshal.AllocHGlobal(szDevInfoData);
				Marshal.StructureToPtr(devInfoData, ptrToDevInfoData,true);

				bool rslt1 = Native.SetupDiSetClassInstallParams(hDevInfo, ptrToDevInfoData, ptrToPcp, Marshal.SizeOf(typeof(Native.SP_PROPCHANGE_PARAMS)));
				bool rstl2 = Native.SetupDiCallClassInstaller(Native.DIF_PROPERTYCHANGE, hDevInfo, ptrToDevInfoData);
				if ((!rslt1) || (!rstl2))
				{
					throw new Exception("Unable to change device state!");
					return false;
				}
				else
				{
					return true;
				}
			}
			catch (Exception ex)
			{
				return false;
			}
		}
Esempio n. 4
0
        private bool EnableOrDisableDevice(IntPtr hDevInfo, Native.SP_DEVINFO_DATA devInfoData, bool bEnable)
        {
            try
            {
                //Marshalling vars
                int    szOfPcp;
                IntPtr ptrToPcp;
                int    szDevInfoData;
                IntPtr ptrToDevInfoData;

                Native.SP_PROPCHANGE_PARAMS pcp = new Native.SP_PROPCHANGE_PARAMS();
                if (bEnable)
                {
                    pcp.ClassInstallHeader.cbSize          = Marshal.SizeOf(typeof(Native.SP_CLASSINSTALL_HEADER));
                    pcp.ClassInstallHeader.InstallFunction = Native.DIF_PROPERTYCHANGE;
                    pcp.StateChange = Native.DICS_ENABLE;
                    pcp.Scope       = Native.DICS_FLAG_GLOBAL;
                    pcp.HwProfile   = 0;

                    //Marshal the params
                    szOfPcp  = Marshal.SizeOf(pcp);
                    ptrToPcp = Marshal.AllocHGlobal(szOfPcp);
                    Marshal.StructureToPtr(pcp, ptrToPcp, true);
                    szDevInfoData    = Marshal.SizeOf(devInfoData);
                    ptrToDevInfoData = Marshal.AllocHGlobal(szDevInfoData);

                    if (Native.SetupDiSetClassInstallParams(hDevInfo, ptrToDevInfoData, ptrToPcp, Marshal.SizeOf(typeof(Native.SP_PROPCHANGE_PARAMS))))
                    {
                        Native.SetupDiCallClassInstaller(Native.DIF_PROPERTYCHANGE, hDevInfo, ptrToDevInfoData);
                    }
                    pcp.ClassInstallHeader.cbSize          = Marshal.SizeOf(typeof(Native.SP_CLASSINSTALL_HEADER));
                    pcp.ClassInstallHeader.InstallFunction = Native.DIF_PROPERTYCHANGE;
                    pcp.StateChange = Native.DICS_ENABLE;
                    pcp.Scope       = Native.DICS_FLAG_CONFIGSPECIFIC;
                    pcp.HwProfile   = 0;
                }
                else
                {
                    pcp.ClassInstallHeader.cbSize          = Marshal.SizeOf(typeof(Native.SP_CLASSINSTALL_HEADER));
                    pcp.ClassInstallHeader.InstallFunction = Native.DIF_PROPERTYCHANGE;
                    pcp.StateChange = Native.DICS_DISABLE;
                    pcp.Scope       = Native.DICS_FLAG_CONFIGSPECIFIC;
                    pcp.HwProfile   = 0;
                }
                //Marshal the params
                szOfPcp  = Marshal.SizeOf(pcp);
                ptrToPcp = Marshal.AllocHGlobal(szOfPcp);
                Marshal.StructureToPtr(pcp, ptrToPcp, true);
                szDevInfoData    = Marshal.SizeOf(devInfoData);
                ptrToDevInfoData = Marshal.AllocHGlobal(szDevInfoData);
                Marshal.StructureToPtr(devInfoData, ptrToDevInfoData, true);

                bool rslt1 = Native.SetupDiSetClassInstallParams(hDevInfo, ptrToDevInfoData, ptrToPcp, Marshal.SizeOf(typeof(Native.SP_PROPCHANGE_PARAMS)));
                bool rstl2 = Native.SetupDiCallClassInstaller(Native.DIF_PROPERTYCHANGE, hDevInfo, ptrToDevInfoData);
                if ((!rslt1) || (!rstl2))
                {
                    throw new Exception("Unable to change device state!");
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception ex)
            {
                return(false);
            }
        }