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

📄 yhnew3.c

📁 在dos 与Linux下通过命令来改变BIOS项设置。
💻 C
📖 第 1 页 / 共 3 页
字号:
 .done_input=done_system,
    //.prasePam=prase_pam,
},
{
 .index=23,
 .Key_input="/confile",
  .description_info="execute configure file",
 .validate=vali_date_d_dhcp,
 .done_input=done_configfile,
    //.prasePam=prase_pam,
}
 };


/****************************************/



/******************/
void showi(int i)
{	
switch (i )
		{
		case 0:	
			
printf("/?        \t\tDisplay this help screen\n");
printf("/Screen=0/1	\tSummary Screen\n\t0:Disable\n\t1:Enable\n");
printf("/Halt=0/1          \tHalt on POST Errors\n\t0:No halt\n\t1:All errors\n");
printf("/OS=0-4		\tInstall OS\n\t0:Other\n\t1:Win95\n\t2:Win98\n\t3:Winme \n\t4:Win2K/XP  \n");
//printf("/PXE_N1=0/1	\tNIC1 with PXE\n\t0:Enabled\n\t1:Disable\n");
//printf("/PXE_N2=0/1	\tNIC2 with PXE\n\t0:Enabled\n\t1:Disable\n");


printf("/Action=0-2	\tAction After Power Failure\n\t0: Stay off\n\t1:Last  state\n\t2:Power on \n");
printf("/Disk_A=0-5	\tLegacy Diskette A\n\t0:Disable\n\t1:360kb\n\t2:1.2MB\n\t3:720Kb\n\t4:1.44/1.25MB\n\t5:2.88MB\n");
//printf("/Boot=0-13 	\tBoot Device Priority\n\t0:USB Key\n");
	break;
		case 1:
printf("/Classis=0/1	\tClassis Intrusion\n\t0:No\n\t1:Yes\n");
printf("/Qboot=0/1		Quick Boot Mode\n\t0:Disable\n\t1:Enable\n");
printf("/dd		\tDisplay BMC LAN Configuation\n");
printf("/dhcp		\tEnable BMC DHCP\n");
printf("/ip=x.x.x.x	\tSet BMC LAN parameters  IP address=x.x.x.x\n");
printf("/net=x.x.x.x 	\tSet BMC LAN parameters netmask=x.x.x.x\n");
printf("/gateway=x.x.x.x \tSet BMC LAN parameters gateway=x.x.x.x\n");
//printf("/mac=x.x.x.x.xx	\tSet LAN MAC address=x.x.x.x.x.x\n");
//printf("/uname=xxx	\tSet BMC users name\n");
//printf("/Order=xxx	\tSet boot order=xxx\n");
//printf("/Hard_o=xxx	\tSet hard drive(s) order=xxx\n");
printf("/Time= hh:mm:ss \tCurrent time\n");
printf("/Date= mm-dd-yy \tCurrent Date\n");
printf("/users=xxx		Read and Set BCM user name\n");
;
//printf("/Power=0/1	\tPower Button Off\n\t0:Enabled\n\t1:Disable\n");
printf("/Con_s=0-2	\tSerial console redirection\n\t0: disable\n\t1:on-board com1 \n\t2:on-board com2.\n");
printf("/Con_post=0/1  		Continue C.R after Post\n\t0:off\n\t1:on\n");
printf("/Con_con=0/1	\tControl connection of Serial consol\n\t0:Direct\n\t1:Via Modem\n");
//printf("/con_file=filename \texecute configure file\n");


break;
		case 2:
//printf("/Con_con=0/1	\tControl connection of Serial consol\n\t0:Direct\n\t1:Via Modem\n");
printf("/Con_fc=0-2	\tFlow control of Serial consol\n\t0:None\n\t1:Xon/Xoff\n\t2:CTS/RTS\n");
printf("/Con_type=0-6 	\tSet Console Type \n\t0:VT100\n\t1:VT100,8bit\n\t2:PC-ANSI,7bit\n\t3:PC-ANSI\n\t4:VT100t\n\t5:VT-UTF8\n\t6:ASCII\n"); 

printf("/Con_rate=0-7	\tRate of Serial port\n\t0:300\n\t1:1200\n\t2:2400\n\t3:9600\n\t4:19.2k\n\t5:38.4k\n\t6:57.6k\n\t7:115.2K.\n");
//printf("/ACPI=0/1		ACPI\n\t0:No\n\t1:Yes\n");
//printf("/A_sx=0/1		Enable ACPI_Sx\n\t0:S1\n\t1:S3\n");
printf("/Boot=0-13 	\tBoot Device Priority\n\t0:USB Key\n\t1:IDE2 SATA0\n");






//printf("/Video=0-2		Default Primary Video Adapter\n\t0:Onboard VGA\n\t1:PCI-E x8 Slot\n\t2:PCI-E x16 Slot\n");


//printf("/Con_type=0-6 	\tSet Console Type \n\t0:VT100\n\t1:VT100,8bit\n\t2:PC-ANSI,7bit\n");

break;
		case 3:
printf("\t2:2400\n\t3:9600\n\t4:19.2k\n\t5:38.4k\n\t6:57.6k\n\t7:115.2K.\n");
printf("/Con_con=0/1	\tControl connection of Serial consol\n\t0:Direct\n\t1:Via Modem\n");
printf("/Boot=0-13 	\tBoot Device Priority\n\t0:USB Key\n\t1:IDE2 SATA0\n\t2:IDE3 SATA1\n\t3:IDE4 SATA2\n\t4:IDE5 SATA3\n\t5:IDE CDROM\n\t6:PCI BEV: IBA\n\t7:PCI BEV: 1IBA \n\t8:PCI BEV: 2IBA \n\t9:Boot add Cards \n\t10: Legacy Network Card\n\t11:Legacy Diskette A\n\t12:Floppy\n\t13:PCI SCSI\n");

//printf("/Quiet=0/1		Quiet Boot Mode\n\t0:Disable\n\t1:Enable\n");


			break;

		}

return;

}
void usage(void)
{

char ch;
int i=0;
showi(i);
do
	{
		ch = getch();
		if ( ch == 0 )
			ch =  getch();
		switch ( ch )
		{
		case 0x50:	//down
			if((++i)>3)
				{i=3;}
			showi(i);
			break;
		case 0x48: //up
			if((--i)<0)
				{i=0;}
			showi(i);
			break;
		
		}
	}while( ch !=0x0d); //ESC

	return;
}


/******************/
int main( int argc, char *argv[] )
{   	int i,j;
   	char *pam[32];
      	printf("******************************************************************\n");
      	printf("*                          BIOS Config Utility                    *\n");
 	printf("******************************************************************\n");
	if((argc == 1)||(argc==2 &&(!(strncmp(argv[1],"/?",2)))))
	{
      usage();
        return 0;
	}
	__initCMOS();
	//printf("bios init done\n");
	//printf("**********cmosstruct.value*******\n");
	//for(k=0;k<200;k++)
	//	{printf("value[ %d ]=%x\n",k,cmosstruct.tokenValue[k]);}
	
	//head=(struct link_type *)malloc(sizeof(struct link_type));
	bcu_init();
	
	
	
	//print_link();
	//printf("bcu init done\n");
	//for(k=0;k<22;k++)
		//{printf("bcu[ %d ].pos losation= %d  current=%d\n",k,bcu[k].pos_location,bcu[k].currentValue);}
	
	i=argc;
	//printf("*************\n");
	for(j=1;j<i;j++)
	{pam[j]=argv[j];
	donepam(pam[j]);
	};
	//printf("the endyh\n");
	__exitCMOS();
	//printf("the end\n");
	return 0;
}
void bcu_init()
{
	int i;
	//printf("**********1**********\n");
	for(i=0;i<17;i++)
	{
	    bcu[i].token_index=getTokenItemIndex(bcu[i].start_post,bcu[i].media);
	    bcu[i].currentValue=bcu[i].readValue(bcu[i].token_index);
	//printf("bcu[ %d ]=%d\t",i,bcu[i].currentValue);
	//bcu[i].showValue(bcu[i]);
	//printf("pos_location= %d\n",bcu[i].pos_location);
	//printf("pos_location= %d\n",bcu[i].optionValue[1]);
	
}
	return;
}
void donepam(char *pam)
{
int k;
int tag=0;
//printf("pam=%s\n",pam);
//printf("tag= %d\n",tag);
k=0;
while(k<17)
{
	if(!(strncmp(pam,bcu[k].Key_input, strlen(bcu[k].Key_input))))
		{tag=k+1;
		k++;
		}
	else 
		k++;
}
while((k>=17)&&(k<24))
	{
	//printf("bcu_o[k-23].Key_input=%s\n",bcu_o[k-23].Key_input);
	if(!(strncmp(pam,bcu_o[k-17].Key_input, strlen(bcu_o[k-17].Key_input))))
		{tag=k+1;
	
		k++;
		}
	else 
		k++;
}
//printf("tag= %d\n",tag);
if(tag==0)
{printf("parameter error\n"); }
else
{
   k=0;

	while(k<17)
   	 {
   		if(!(strncmp(pam,bcu[k].Key_input, strlen(bcu[k].Key_input))))
		{
			int i;
			char *temp;
			temp= strstr(pam, "=");
			if(temp==NULL) 
				{  bcu[k].showValue(bcu[k]);}
			else
			{
				
				temp=temp+1;
				para_long=strlen(temp);
				strncpy(time_input,temp,para_long);
				i=atoi(temp);
				if(bcu[k].validate(bcu[k],i))
				{
					bcu[k].currentValue=bcu[k].prasePam(bcu[k],i);
					bcu[k].writeValue(bcu[k].token_index,bcu[k].currentValue);
					bcu[k].showValue(bcu[k]);
					
				}
			}
			break;	
     		 }
		k++;
	//break;
    	}


	while((k>=17)&&(k<24))
	  {
       
			if(!(strncmp(pam,bcu_o[k-17].Key_input, strlen(bcu_o[k-17].Key_input))))
			{
				
				char *temp;

				temp= strstr(pam, "=");
				if(temp==NULL) 
					{para=0;}
				else
					{para=1;}
				//printf("para_long=%d\n",para);
				temp++;
			      para_long=strlen(temp);
             
			     strncpy(time_input,temp,para_long);
			     if(bcu_o[k-17].validate())
		       	{
			         bcu_o[k-17].done_input(bcu_o[k-17].Key_input);
		               }
                   break;
		
	         }

	k++;	
    }
}

//printf("end donepam\n");	
return ;
}

void  show_value(struct yhCmosstruct current_bcu)
{
	int itemnum;
	int temp;
	int i,j;
	j=0;
	itemnum=1;
	temp=1;
	for(temp=1;current_bcu.optionValue[temp]!=100;temp++)
		{itemnum++;}

	for(i=0;i<itemnum;i++)
	{	
		if (current_bcu.currentValue==current_bcu.cbit[i])
			{j=i;}
	}
	printf("%s is %s\n",current_bcu.description_info,current_bcu.optiondesction[j]);
	return;
}

unsigned short prase_pam(struct yhCmosstruct current_bcu,int paminput)
{
	return current_bcu.cbit[paminput];
}
int vali_date(struct yhCmosstruct current_bcu,int paminut)
{
	int i,j;
	i=1;
	j=1;
	while(current_bcu.optionValue[i]!=100)
		{
		j++;
		i++;
		}

		/*if((current_bcu.index==13||current_bcu.index==14||current_bcu.index==15||current_bcu.index==16||current_bcu.index==17)&&(bcu[12].currentValue==0))
			{
			printf("Set serial console redirection is disabled\n");
			i=0;}
	//printf("option number= %d\n",j);
	else 
	*/if((paminut<0)||(paminut>=j))
	{printf("param input error,it must in %d-%d\n",current_bcu.optionValue[0],current_bcu.optionValue[j-1]);
		i=0;}
	return i;
}
int vali_date_d_dhcp(void)
{
	int tag;
	tag=1;
	return tag;
}
int vali_date_ip_gw()
{
	int i,j;
	
	int a[4];
	j=1;
	sscanf(time_input, "%d.%d.%d.%d", &a[0],&a[1],&a[2],&a[3]);
	for(i=0;i<4;i++)
	{if(a[i]<0||a[i]>255)
		{j=0;}
	}
	if(j==0)
		{printf("error input, ipaddress need in 0-255.0-255.0-255.0-255\n");}
	return j;
}
int vali_date_mask()
{
	int i,j;

	int mask[4];
		j=1;
	sscanf(time_input, "%d.%d.%d.%d", &mask[0],&mask[1],&mask[2],&mask[3]);
	if(mask[0]!=255)
		{j=0;}
	for(i=1;i<3;i++)
		{ if((mask[i]!=0)&&(mask[i]!=255))
			{j=0; }
		}
	if(mask[3]!=0)
		{j=0;}
	if(j==0)
	{printf("error netmask need be one of 255.0.0.0 or 255.255.0.0 255.255.255.0\n");}
	return j;
}
int vali_date_mac()
{
	int tag=1;
	int strl;
	int i;
	char a[12];
	strl=strlen(time_input);
	//printf("strlen input %d\n",strl);
	if(strl!=17)
		{tag=0;}
	sscanf(time_input, "%c%c:%c%c:%c%c:%c%c:%c%c:%c%c", &a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9],&a[10],&a[11]);
	//printf("%s\n",a);
	for(i=0;i<12;i++)
	{	if((a[i]<48)||(a[i]>57&&a[i]<64)||(a[i]>70&&a[i]<96)||(a[i]>102))
		{tag=0;}
	}
	if(tag==0)
	{printf("error input, MAC need in 00-FF. 00-FF. 00-FF. 00-FF. 00-FF. 00-FF\n");}
	return tag;
}
unsigned short boot_device_read(unsigned short  useless)
{
	int i,j,k;
	 unsigned short temp;
	unsigned short location[8]={0x015e,0x0164,0x016a,0x0288,0x028e,0x0294,0x029a,0x02a0};
	// unsigned short  start_pos=0x015e;
	 
	 //printf("run read\n");
	for(i=0;i<8;i++)
	{
		temp=getTokenItemIndex(location[i],0);
		current_bootvlaue[i]=getTokenItemValue(temp);
		//printf("current_bootvlaue[%d]=%d\n",i,current_bootvlaue[i]);
		//start_pos=start_pos+0x06;
	}
	//pxe_check();
	j=0;
	//while(current_bootvlaue[j]!=63)
	//	{j++;}
	//device_num=j;
	//t=0;
	//for(t=0;t<8;t++)
		//{printf("%d\t",current_bootvlaue[t]);}
	//	device_num=8;
	for(i=0;i<8;i++)
	{	
	//printf("current_bootvlaue[%d]=%d\n",i-1, current_bootvlaue[i-1]);
		j=15;
		for(k=0;k<14;k++)
		{if (current_bootvlaue[i]==Bootdevicedefault[k].member)
			{j=k;}
		}
		Bootdevice[i+1]=Bootdevicedefault[j];
	 //	printf("%d -%d \t", i,Bootdevice[i].member);
	}
	creat_link();
	
	return 1;
	
}

unsigned short boot_device_write(unsigned short  useless1, unsigned short  useless2)
{	
	int i;
	 unsigned short temp;
	 unsigned short location[8]={0x015e,0x0164,0x016a,0x0288,0x028e,0x0294,0x029a,0x02a0};
	// unsigned short  start_pos=0x015e;
	for(i=0;i<8;i++)
	{
		temp=getTokenItemIndex(location[i],0);
		setTokenItemValue(temp,current_bootvlaue[i]);
		//start_pos=start_pos+0x06;
		}
	return 1;
}
void boot_device_show(struct yhCmosstruct current_bcu)
{	/*	int j;
	j=0;
	while(current_bootvlaue[j]!=63)
		{j++;}
	//printf("j=%d\n",j);
	
	device_num=j;
 	
 	printf("%s:\n",current_bcu.description_info);
 	for(i=0;i<device_num;i++)
	{	//printf("current_bootvlaue[%d]=%d",i, current_bootvlaue[i]);
		j=0;
		for(k=0;k<10;k++)
		{if (current_bootvlaue[i]==current_bcu.cbit[k])
			{j=k;}
		}
		printf("%s\n",current_bcu.optiondesction[j]);
	}
 	//for(n=0;n<device_num;n++)
		//{printf("%s\n",current_bcu.optiondesction[j]);}
		*/
	print_link();
 	return;
}
unsigned short boot_device_prase_pam(struct yhCmosstruct current_bcu,int paminput)
{
	/*int temp[8];
	int m,n;
	int i,j,k;
	
	//unsigned temp_value;
	//int temp_location;
	m=paminput;
	j=para_long;
	n=1;
	for(k=0;k<j-1;k++)
		{n=n*10;}
	for(i=0;i<j;i++)
	{
		temp[i]=m/n;
		m=m%n;
		n=n/10;
	}
	//printf("param_num= %d\t paminput=%d\n",j,m);
	for(i=0;i<j;i++)
	{printf("%d \t",temp[i]);	}
	printf("\n");
	*/
	/*for(i=0;i<8;i++)
	{printf("%d \t",current_bootvlaue[i]);}	
	printf("\n");
	*/
	/*for(i=0;i<j;i++)
	{
		current_bootvlaue[i]=current_bcu.cbit[temp[i]];
		//current_bootvlaue[temp_location]=temp_value;
	}
	for(i=j;i<8;i++)
		{current_bootvlaue[i]=63;}
	//printf("\n");
	//for(i=0;i<8;i++)
	//{printf("%d \t",current_bootvlaue[i]);}	
		//printf("\n");
		*/
	int i,j,k,l,m,p, t ;
	struct link_type *n, *check;
	int input_order[15];
	p=0;
	t=0;
	m=0;
	l=0;
	for(i=0;i<strlen(time_input);i++)
	{	
		if(time_input[i]==',')
			{p++;}
	}
	//printf("p=%d \n",p);
	sscanf(time_input, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d", &input_order[0],&input_order[1],&input_order[2],&input_order[3],&input_order[4],&input_order[5],&input_order[6],&input_order[7],&input_order[8],&input_order[9],&input_order[10],&input_order[11],&input_order[12],&input_order[13],&input_order[14]);
	//for(m=0;m<p+1;m++)
	//	{printf("%d\t",input_order[m]);}
	//printf("end m\n");
	for(m=0;m<p+1;m++)
	{
		i=input_order[m];
		t=m+1;
		//printf("m= %d t= %d input-order= %d\n", m,t,i);
		j=100;
		l=0;
		//if(place_temp>j)
			//{i++;}
		check=head;
		check=check->next;
		while(check->next!=NULL&&check->id<8)
			{
			if (check->input.member==current_bcu.cbit[i])
				{j=check->id; break;}
			else
				{check=check->next;}
		
			}
		if(j==100)
		{
			for(k=0;k<14;k++)
			{	if (current_bcu.cbit[i]==Bootdevicedefault[k].member)
					{l=k;}
			}
			temp_boot=Bootdevicedefault[l];
			//printf("j=%d ",j);
			//printf("temp-boot %s",temp_boot.value);
			add_item(t);
		}
		else
		{	
			//printf("j=%d ",j);
			
			temp_boot=check->input;

⌨️ 快捷键说明

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