⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 老外的一个开源项目
💻 CS
📖 第 1 页 / 共 2 页
字号:

		private void btRead_Click(object sender, System.EventArgs e)
		{
			int	cb	= 0;
			byte[] inbuffer = new byte[8];
			byte[] outbuffer = new byte[4];


			if (!verifyAddressParameter())
			{
				reWriteAddressParameter();
				return;
			}
 
			inbuffer[0] = 1;

			//address
			outbuffer = BitConverter.GetBytes(g_address);
			inbuffer[7] = outbuffer[3];
			inbuffer[6] = outbuffer[2];
			inbuffer[5] = outbuffer[1];
			inbuffer[4] = outbuffer[0];

			if (!KernelIoControl(IOCTL_PHY_ADR, inbuffer, 8, outbuffer, 4, ref cb))
			{
				MessageBox.Show ("KernelIoControl call error! ","Access error",
					MessageBoxButtons.OK, MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);
				return;
			}
			g_data = BitConverter.ToUInt32(outbuffer,0);
			reWriteAddressParameter();
			reWriteDataParameter();
		}

		private void btWrite_Click(object sender, System.EventArgs e)
		{
			int	cb	= 0;
			byte[] inbuffer = new byte[16];
			byte[] outbuffer = new byte[4];

			if (!verifyAddressParameter())
			{
				reWriteAddressParameter();
				return;
			}
			if (!verifyDataParameter())
			{
				reWriteDataParameter();
				return;
			}
			if (!verifyMaskParameter())
			{
				reWriteMaskParameter();
				return;
			}

			inbuffer[0] = 2;

			//address
			outbuffer = BitConverter.GetBytes(g_address);
			inbuffer[7] = outbuffer[3];
			inbuffer[6] = outbuffer[2];
			inbuffer[5] = outbuffer[1];
			inbuffer[4] = outbuffer[0];
			//data
			outbuffer = BitConverter.GetBytes(g_data);
			inbuffer[11] = outbuffer[3];
			inbuffer[10] = outbuffer[2];
			inbuffer[9] = outbuffer[1];
			inbuffer[8] = outbuffer[0];
			//mask
			outbuffer = BitConverter.GetBytes(g_mask);
			inbuffer[15] = outbuffer[3];
			inbuffer[14] = outbuffer[2];
			inbuffer[13] = outbuffer[1];
			inbuffer[12] = outbuffer[0];
			if (!KernelIoControl(IOCTL_PHY_ADR, inbuffer, 16, outbuffer, 4, ref cb))
			{
				MessageBox.Show ("KernelIoControl call error! ","Access error",
					MessageBoxButtons.OK, MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);
				return;
			}
			reWriteAddressParameter();
			reWriteDataParameter();
			reWriteMaskParameter();
		}

		private void reWriteAddressParameter()
		{
			string output;

			output = String.Format("{0:X4}", g_address>>16);
			tbAddressHI.Text = output;
			output = String.Format("{0:X4}", (g_address & 0x0000ffff));
			tbAddressLO.Text = output;
		}

		private bool verifyAddressParameter()
		{
			UInt16 AddressLO = 0;

			try 
			{
				System.Convert.ToUInt16(tbAddressHI.Text,16);
			}
			catch (System.FormatException)
			{
				return false;
			}
			catch (System.OverflowException)
			{
				return false;
			}
			try 
			{
				AddressLO = System.Convert.ToUInt16(tbAddressLO.Text,16);
			}
			catch (System.FormatException)
			{
				return false;
			}
			catch (System.OverflowException)
			{
				return false;
			}
			// test word boundry
			if (0 != AddressLO % 4)
			{
				MessageBox.Show ("Address error, must be on 4 byte boundry! ","Access error",
					MessageBoxButtons.OK, MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);
				return false;
			}
			try 
			{
				g_address = System.Convert.ToUInt32(tbAddressHI.Text,16) * 0x00010000 +
					System.Convert.ToUInt32(tbAddressLO.Text,16);
			}
			catch (System.FormatException)
			{
				return false;
			}
			return true;
		}

		private void reWriteDataParameter()
		{
			string output;

			output = String.Format("{0:X4}", g_data>>16);
			tbDataHI.Text = output;
			output = String.Format("{0:X4}", (g_data & 0x0000ffff));
			tbDataLO.Text = output;
		}

		private bool verifyDataParameter()
		{
			try 
			{
				System.Convert.ToUInt16(tbDataHI.Text,16);
			}
			catch (System.FormatException)
			{
				return false;
			}
			catch (System.OverflowException)
			{
				return false;
			}
			try 
			{
				System.Convert.ToUInt16(tbDataLO.Text,16);
			}
			catch (System.FormatException)
			{
				return false;
			}
			catch (System.OverflowException)
			{
				return false;
			}
			try
			{
				g_data = System.Convert.ToUInt32(tbDataHI.Text,16) * 0x00010000 +
					System.Convert.ToUInt32(tbDataLO.Text,16);
			}
			catch (System.FormatException)
			{
				return false;
			}
			return true;
		}

		private void reWriteMaskParameter()
		{
			string output;

			output = String.Format("{0:X4}", g_mask>>16);
			tbMaskHI.Text = output;
			output = String.Format("{0:X4}", (g_mask & 0x0000ffff));
			tbMaskLO.Text = output;
		}

		private bool verifyMaskParameter()
		{
			try 
			{
				System.Convert.ToUInt16(tbMaskHI.Text,16);
			}
			catch (System.FormatException)
			{
				return false;
			}
			catch (System.OverflowException)
			{
				return false;
			}
			try 
			{
				System.Convert.ToUInt16(tbMaskLO.Text,16);
			}
			catch (System.FormatException)
			{
				return false;
			}
			catch (System.OverflowException)
			{
				return false;
			}
			try
			{
				g_mask = System.Convert.ToUInt32(tbMaskHI.Text,16) * 0x00010000 +
					System.Convert.ToUInt32(tbMaskLO.Text,16);
			}
			catch (System.FormatException)
			{
				return false;
			}
			return true;
		}

		private void vScrollBar1_ValueChanged(object sender, System.EventArgs e)
		{
			if (verifyAddressParameter() && vScrollBar1.Value != 0)
			{
				switch (vScrollBar1.Value) 
				{
					case 16:
						g_address = g_address - 16;
						break;
					case 4:
						g_address = g_address - 4;
						break;
					case -16:
						g_address = g_address + 16;
						break;
					case -4:
						g_address = g_address + 4;
						break;
				}
				reWriteAddressParameter();
				vScrollBar1.Value = 0;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -