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

📄 dmi_sn.bak

📁  通过smbios 50h,51h,52h等功能调用
💻 BAK
📖 第 1 页 / 共 2 页
字号:
				i=0;
				if (strcmpi((char *)parm_leading,"//") != 0)
					{
					strcpy ((char *)argv_buffer+i,(char *)parm_leading);
					i += (strlen((char *)parm_leading));
					}

				strcpy ((char *)argv_buffer+i,(char *)parm_counter);
				i += (strlen((char *)parm_counter));

				if (strcmpi((char *)parm_adm,"//") != 0)
					{
					strcpy ((char *)argv_buffer+i,(char *)parm_adm);
					i += (strlen((char *)parm_adm));
					}
	
				argv_buffer[i+1] = NULL;

/*;;;;;				if (strcmpi((char *)temp_offset,(char *)argv_buffer) == 0)
					{
					printf ("This Mothbord serial number = counter number.\n");
					printf ("Are you sure write to flash Rom <y> <n>:");
					i = getchar();
					if (!(i == 0x59 || i == 0x79)) return;
					}	*/
/*-----------------------------*/
				}
			else
				{
				strcpy((char *)file_check,"*DMI*");
				strcpy ((char *)parm_leading,(char *)argv_leading);
				strupr ((char *)parm_leading);
				strcpy ((char *)parm_start,(char *)argv_start);
				strupr ((char *)parm_start);
				strcpy ((char *)parm_end,(char *)argv_end);
				strupr ((char *)parm_end);  	 
				strcpy ((char *)parm_adm,(char *)argv_adm);
				strupr ((char *)parm_adm);
				strcpy ((char *)parm_counter,(char *)parm_start);
				strcpy ((char *)num_temp,(char *)argv_num);
				strupr ((char *)parm_adm);
		 		}
		 	}
		else if (Now_Write == 1)
			{
			strcpy ((char *)parm_leading,(char *)argv_leading);
			strupr ((char *)parm_leading);
			strcpy ((char *)parm_counter,(char *)argv_start);
			strupr ((char *)parm_counter);
			strcpy ((char *)parm_adm,(char *)argv_adm);
			strupr ((char *)parm_adm);
			}
		else Print_Help_Func();
		}
/*-----------------------*/
/*-----------------------------------------------*/
/*-----------------------------------------------*/
	else
		{
		if(system_flag)
			temp_offset = (char *)Type3_DMIStrucBuffer + *((char *)Type3_DMIStrucBuffer + 1);
		else
			temp_offset = (char *)Type1_DMIStrucBuffer + *((char *)Type1_DMIStrucBuffer + 1);
		for (i=0;i<3;i++)
			{
			strcpy ((char *)Temp_str,(char *)temp_offset);
			temp_offset += (strlen((char *)Temp_str)+1);
			}
		if (strcmpi((char *)temp_offset,"NULL") == 0)
			printf ("DMI serial number = %s\n\n","NULL");
		else
			printf ("DMI serial number = %s\n\n",temp_offset);
		if (file_flag == 1)
			{
			strcpy ((char *)parm_counter_next,(char *)parm_counter);

			end_len=strlen((char *)parm_end);
			counter_len=strlen((char *)parm_counter_next);
			if (strcmpi((char *)num_temp,"/H") == 0)
				{
				for (i=counter_len;i>0;i--)
					{
					counter=parm_counter_next[i-1];
					if (!((counter >= 0x30 && counter <= 0x3a) || (counter >=0x41 && counter <= 0x46)))
						{
						printf ("Counting select ERROR.\n");
						return;
						}
					counter ++;
					if (counter == 0x3a)
						counter=0x41;
					if (counter < 0x47)
						{
						parm_counter_next[i-1]=counter;
						break;
						}
					if (i == 1)
						{
						memmove(&parm_counter_next[i],&parm_counter_next[i-1],counter_len+1);
						parm_counter_next[i]='0';
						parm_counter_next[i-1]='1';
						break;
						}
					parm_counter_next[i-1]='0';
					}
				}
			else if (strcmpi((char *)num_temp,"/A") == 0)
				{
				for (i=counter_len;i>0;i--)
					{
					counter=parm_counter_next[i-1];
					counter ++;
					if (counter == 0x3a)
						counter=0x41;
					if (counter < 0x5b)
						{
						parm_counter_next[i-1]=counter;
						break;
						}
					if (i == 1)
						{
						memmove(&parm_counter_next[i],&parm_counter_next[i-1],counter_len+1);
						parm_counter_next[i]='0';
						parm_counter_next[i-1]='1';
						break;
						}
					parm_counter_next[i-1]='0';
					}
				}
			else
				{
				for (i=counter_len;i>0;i--)
					{
					counter=parm_counter_next[i-1];
					if (!((counter >= 0x30) || (counter <= 0x3a)))
						{
						printf ("Counting select ERROR.\n");
						return;
						}
					counter ++;
					if (counter < 0x3a)
						{
						parm_counter_next[i-1]=counter;
						break;
						}
					if (i == 1)
						{
						if (counter_len >= 64)
							{
							printf("WARRING:serial number overflow.");
							fclose(dmi_sn);
							return;
							}
						memmove(&parm_counter_next[i],&parm_counter_next[i-1],counter_len+1);
						parm_counter_next[i]='0';
						parm_counter_next[i-1]='1';
						break;
						}
					parm_counter_next[i-1]='0';
					}
				}

			if (strcmpi((char *)parm_leading,"//") == 0)
				{
				if (strcmpi((char *)parm_adm,"//") == 0)
					{
					printf ("Start DMI serial number = %s\n",parm_start);
					printf ("Next DMI serial number = %s\n",parm_counter_next);
					printf ("Last DMI serial number = %s\n",parm_end);
					}
				else
					{ 
					printf ("Start DMI serial number = %s%s\n",parm_start,parm_adm);
					printf ("Next DMI serial number = %s%s\n",parm_counter_next,parm_adm);
					printf ("Last DMI serial number = %s%s\n",parm_end,parm_adm);
					}
				}
			else
				{
				if (strcmpi((char *)parm_adm,"//") == 0)
					{
					printf ("Start DMI serial number = %s%s\n",parm_leading,parm_start);
					printf ("Next DMI serial number = %s%s\n",parm_leading,parm_counter_next);
					printf ("Last DMI serial number = %s%s\n",parm_leading,parm_end);
					}
				else
					{ 
					printf ("Start DMI serial number = %s%s%s\n",parm_leading,parm_start,parm_adm);
					printf ("Next DMI serial number = %s%s%s\n",parm_leading,parm_counter_next,parm_adm);
					printf ("Last DMI serial number = %s%s%s\n",parm_leading,parm_end,parm_adm);
					}
				}


			}
		else
			{
			printf ("Start DMI serial number = No steup number\n");
			printf ("Next DMI serial number = No steup number\n");
			printf ("Last DMI serial number = No steup number\n");
			}
		return;
		}
/*-------------------------------------------------------------------*/
	if (Now_Write == 0)
		{
		end_len=strlen((char *)parm_end);
		counter_len=strlen((char *)parm_counter);
		if (hex_flag == 1)
			{
			for (i=counter_len-1;i>=0;i--)
				{
				counter=parm_counter[i];
				if (!((counter >= 0x30 && counter <= 0x3a) || (counter >=0x41 && counter <= 0x46)))
					{
					printf ("Counting select ERROR.\n");
					return;
					}
				if (cmp_flag == 1)
					{
					counter ++;
					if (counter == 0x3a)
						counter=0x41;
					if (counter < 0x47)
						{
						parm_counter[i]=counter;
						break;
						}
					if (i == 0)
						{
						printf("WARRING:serial number overflow.\n");
						return;
						}
					parm_counter[i]='0';
					}
				}
			}
		else if (all_flag == 1)
			{
			for (i=counter_len-1;i>0;i--)
				{
				counter=parm_counter[i];
				if (cmp_flag == 1)
					{
					counter ++;
					if (counter == 0x3a)
						counter=0x41;
					if (counter < 0x5b)
						{
						parm_counter[i]=counter;
						break;
						}
					if (i == 0)
						{
						printf("WARRING:serial number overflow.\n");
						return;
						}
					parm_counter[i]='0';
					}
				}
			}
		else
			{
			for (i=counter_len-1;i>0;i--)
				{
				counter=parm_counter[i];
				if (!((counter >= 0x30) && (counter <= 0x3a)))
					{
					printf ("Counting select ERROR.\n");
					return;
					}
				if (cmp_flag == 1)
					{
					counter ++;
					if (counter < 0x3a)
						{
						parm_counter[i]=counter;
						break;
						}
					if (i == 0)
						{
						printf("WARRING:serial number overflow.\n");
						return;
						}
					parm_counter[i]='0';
					}
				}
			}
		if(over_flag == 0)
			{
			for (i=0;i<end_len;i++)
				{
				if (parm_end[i] > parm_counter[i]) break;
				if (parm_end[i] < parm_counter[i])
					{
					printf("WARRING:serial number overflow.");
					fclose(dmi_sn);
					return;
					}
				}
			}
		}
/*------------------ Set DMI Struct ------------------------------start*/
	if (Clear_flag == 0)
		{
		if (strcmpi((char *)parm_leading,"//") != 0)
			{
			strcpy ((char *)Temp_Str_Point,(char *)parm_leading);
			Temp_Str_Point += (strlen((char *)parm_leading));
			}
		strcpy ((char *)Temp_Str_Point,(char *)parm_counter);
		Temp_Str_Point += (strlen((char *)parm_counter));

		if (strcmpi((char *)parm_adm,"//") != 0)
			{
			strcpy ((char *)Temp_Str_Point,(char *)parm_adm);
			Temp_Str_Point += (strlen((char *)parm_adm));
			if (strcmpi((char *)parm_leading,"//") == 0)
				Set_DMIStrucBuffer->data_length = (+strlen((char *)parm_counter)+strlen((char *)parm_adm)+1);
			else
				Set_DMIStrucBuffer->data_length = (strlen((char *)parm_leading)+strlen((char *)parm_counter)+strlen((char *)parm_adm)+1);
			}
		else
			{
			if (strcmpi((char *)parm_leading,"//") == 0)
				Set_DMIStrucBuffer->data_length = (strlen((char *)parm_counter)+1);
			else 
				Set_DMIStrucBuffer->data_length = (strlen((char *)parm_leading)+strlen((char *)parm_counter)+1);
			}
	
		*(Temp_Str_Point+1) = NULL;
	
		Set_DMIStrucBuffer->command = 5;
		Set_DMIStrucBuffer->change_mask = 0x00;
		Set_DMIStrucBuffer->change_value = 0;
		Set_DMIStrucBuffer->field_ofs = 7;
	
		if (Now_Write == 0)
			{

			if (strcmpi((char *)parm_leading,"//") != 0)
				{
				if (strcmpi((char *)parm_adm,"//") != 0)
					{
					printf("DMI serial number=%s%s%s\n\n",parm_leading,parm_counter,parm_adm);
					printf("Last DMI serial number=%s%s%s\n\n",parm_leading,parm_end,parm_adm);
					}
				else
					{
					printf("DMI serial number=%s%s\n\n",parm_leading,parm_counter);
					printf("Last DMI serial number=%s%s\n\n",parm_leading,parm_end);
					}
				}
			else
				{
				if (strcmpi((char *)parm_adm,"//") != 0)
					{
					printf("DMI serial number=%s%s\n\n",parm_counter,parm_adm);
					printf("Last DMI serial number=%s%s\n\n",parm_end,parm_adm);
					}
				else
					{
					printf("DMI serial number=%s\n\n",parm_counter);
					printf("Last DMI serial number=%s\n\n",parm_end);
					}
				}


			}

		if (prompt_flag == 0)
			{
			printf("Are you sure write to flash Rom <y> <n>:");
			i = getchar();
			if (i == 0x59 || i == 0x79)
				{
				printf("*** Update DMI structure progressing ***\n");
				printf("      === Please Wait a moment ===      \n");
	 			stack_temp_byte=Set_DMI_Struct ();
				DMI_Error_Code();
				if (stack_temp_byte != 0) return; 
				}
			}
		else
			{
			printf("*** Update DMI structure progressing ***\n");
			printf("      === Please Wait a moment ===      \n");
			stack_temp_byte=Set_DMI_Struct ();
			DMI_Error_Code(); 
			if (stack_temp_byte != 0) return;
			}
		}
/*------------------ Set DMI Struct ------------------------------end*/
/*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------*/
	if (Now_Write == 0)
		{
		dmi_sn=fopen(DMI_SN_file, "w+t");
		fseek (dmi_sn,0,SEEK_SET);
		fprintf (dmi_sn,"%s",file_check);
		fseek (dmi_sn,1,SEEK_CUR);
		fprintf (dmi_sn,"%s",parm_leading);
		fseek (dmi_sn,1,SEEK_CUR);
	 	fprintf (dmi_sn,"%s",parm_start);
		fseek (dmi_sn,1,SEEK_CUR);
		fprintf (dmi_sn,"%s",parm_end);
		fseek (dmi_sn,1,SEEK_CUR);
		fprintf (dmi_sn,"%s",parm_adm);
		fseek (dmi_sn,1,SEEK_CUR);
		fprintf (dmi_sn,"%s",parm_counter);
		fseek (dmi_sn,1,SEEK_CUR);
		fprintf (dmi_sn,"%s",num_temp);
		fclose (dmi_sn);
		}

	return;
}


void DMI_Error_Code(void)
	{
	char *show_func_Message[] = {
			"=== UPDATE SUCCESS ===",
			"=== DMI UNKNOWN FUNCTION ===",
			"=== DMI FUNCTION NOT SUPPORTED ===",
			"=== DMI INVALID HANDLE ===",
			"=== DMI BAD PARAMETER ===",
			"=== DMI INVALID SUBFUNCTION ===",
			"=== DMI NO CHANGE ===",
			"=== DMI ADD STRUCTURE FAILED ===",
			"=== DMI READ ONLY ===",
			"=== DMI LOCK NOT SUPPORTED ===",
			"=== DMI CURRENTLY LOCKED ===",
			"=== DMI INVALID LOCK ===",
			};

	stack_temp_byte = stack_temp_byte & 0x00ff;
	switch(stack_temp_byte)
		{
		case ST_SUCCESS:
			printf ("\n%s\n",show_func_Message[0]);
	      break;
		case ST_UNKNOW_FUNC:
		case ST_FUNC_NOT_SUPPORT:
		case ST_INVALID_HANDLE:
		case ST_BAD_PARA:
		case ST_INVALID_SUBFUNC:
		case ST_NO_CHANGE:
		case ST_ADD_STRUC_FAIL:
      	printf ("\n%s\n",show_func_Message[stack_temp_byte-0x80]);
	      break;

		case ST_READ_ONLY:
      	printf ("\n%s\n",show_func_Message[8]);
	      break;

		case ST_LOCK_NOT_SUPPORT:
      	printf ("\n%s\n",show_func_Message[9]);
	      break;

		case ST_CURRENT_LOCK:
      	printf ("\n%s\n",show_func_Message[10]);
	      break;

		case ST_INVALID_LOCK:
   	   printf ("\n%s\n",show_func_Message[11]);
      	break;
 
		default:
      	break;
		}
	return;
	}

⌨️ 快捷键说明

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