#include
#include
#include
#include
#include
char *GetAscii(unsigned int inData[], int offStart, int offEnd);
int main(void)
{
unsigned int diskData[256]; /* Disk data */
unsigned int offset; /* Disk data offset */
int loop;
int numDrv; /* Number of IDE hard drives */
union REGS registers;
unsigned int biosCyl[2]; /* Cylinders, Heads, Sectors */
unsigned int biosHead[2];
unsigned int biosSec [2];
numDrv = peekb(0x40, 0x75); /* BIOS Data area, Number of Hard disks */
for (loop = 0; loop < numDrv; loop++)
{
while (inp(0x01f7) != 0x50); /* Wait for controller not busy */
outp(0x01f6, (loop == 0 ? 0xa0 : 0xb0)); /* Get first/second drive */
outp(0x01f7, 0xec); /* Get drive info data */
while (inp(0x1f7) != 0x58); /* Wait for data ready */
for (offset = 0; offset != 256; offset++) /* Read "sector" */
diskData[offset] = inpw(0x1f0);
/* Get BIOS drive info */
registers.h.ah = 0x08; /* Get drive info */
registers.h.dl = 0x80 + loop; /* Drive is 80H for Disk 0, 81H for Disk 1 */
int86(0x13, ?isters, ?isters);
if (!registers.x.cflag) /* All OK if carry not set */
{
biosHead[loop] = registers.h.dh + 1; /* Heads are from 0 */
biosSec[loop] = registers.h.cl & 0x3f; /* sec is bits 5 - 0 */
/* +1 because starts from 0 and +1 for FDISK leaving one out */
biosCyl[loop] = ((registers.h.cl & 0xc0) << 2) + registers.h.ch + 2;
} /* end of if */
printf("DRIVE %d:\n", loop);
printf("Model Number______________________: %s\n", GetAscii(diskData, 27, 46));
printf("Serial Number_____________________: %s\n", GetAscii(diskData, 10, 19));
printf("Controller Revision Number________: %s\n\n", GetAscii(diskData, 23, 26));
printf("Able to do Double Word Transfer___: %6s\n", (diskData[48] == 0 ? "No" : "Yes"));
printf("Controller type___________________: %04X\n", diskData[20]);
printf("Controller buffer size (bytes)____: %6u\n", diskData[21] * 512);
printf("Number of ECC bytes transferred___: %6u\n", diskData[22]);
printf("Number of sectors per interrupt___: %6u\n\n", diskData[47]);
printf("Hard Disk Reports\n");
printf("Number of Cylinders (Fixed)_______: %6u\n", diskData[1]);
printf("Number of Heads___________________: %6u\n", diskData[3]);
printf("Number of Sectors per Track_______: %6u\n\n", diskData[6]);
printf("BIOS Reports\n");
printf("Number of Cylinders_______________: %6u\n", biosCyl[loop]);
printf("Number of Heads___________________: %6u\n", biosHead[loop]);
printf("Number of Sectors per Track_______: %6u\n\n", biosSec[loop]);
printf("Press any key to continue...\n\n");
getch();
} /* end of for */
return 0;
} /* main() */
char *GetAscii(unsigned int inData[], int offStart, int offEnd)
{
static char retVal[255];
int loop, loop1;
for (loop = offStart, loop1 = 0; loop <= offEnd; loop++)
{
retVal[loop1++] = (char )(inData[loop] / 256); /* Get High byte */
retVal[loop1++] = (char )(inData[loop] % 256); /* Get Low byte */
} /* end of for */
retVal[loop1] = '\0'; /* Make sure it ends in a NULL character */
return retVal;
} /* GetAscii() */
通过端口获取IDE硬盘ID
时间: 2024-10-22 22:03:01
通过端口获取IDE硬盘ID的相关文章
C#应用:获取cpu序列号,硬盘ID,网卡MAC地址
硬盘 private void GetInfo() { string cpuInfo = "";//cpu序列号 ManagementClass cimobject = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = cimobject.GetInstances(); foreach(ManagementObject mo in moc) {
用C#获取硬盘ID编号
在软件产品中常常需要制作软件注册码,而根据硬件产品编号制作注册码是一个不错得选择.可以使用读取注册表的方式获得第一块硬盘的编号. 主要程序代码. private void button1_Click(object sender, EventArgs e){ textBox1.Text = Registry.GetValue("HKEY_Local_Machine\\HardWare\\Devicemap\\Scsi\\Scsi port 0\\Scsi Bus 0\\Target Id 1\\L
javaee-Action可以调用,但没有办法获取到“用户ID”
问题描述 Action可以调用,但没有办法获取到"用户ID" 有事相求.项目开发的. 就是我现在做着:用户管理模块 我是用SSH2框架来做的. 我想我调用"删除的Action",我要根据"用户ID"来删除. 目前状况:Action可以调用,但没有办法获取到"用户ID" 相关截图: 解决方案 地址传参:用"?"不是用"&" 解决方案二: 有传用户ID到后台去吗?
Yii获取最小可用ID
编者注:本文已获原创加分,请作者继续努力! 最近使用Yii做东西.Mysql数据表使用了自增ID,这样用起来很方便,但也有一个我不希望出现的现象:假设有10条记录,1,2,3,4,5,6,7,8,9,10, 从1到9这9条记录删除了.以后再插入记录时,因为是自增ID,新的ID号就是11了,前面产生了很多空余的可用ID. 所以只能自己写代码来解决这个问题,应该算是比较笨的方法,但是我的目的达到了,处理思路如下: (1)首先对表的记录数进行判断,如果记录为0,说明是空表,则最小可用ID为1: (2)
ASP获取新增记录ID值的方法
这篇文章主要介绍了ASP获取新增记录ID值的方法,分别介绍了ASP+Access2000.ASP+SQL Server 2000两种数据库的获取方法,需要的朋友可以参考下 ASP+Access2000 1.要获取的ID值字段属性必须设为:自动编号(我们假设字段名为recordID) 2.添加记录格式:Rs.Open table,Cn,1,3 注意模式为:1,3 3.newID = rs.Fields("recordID") 4.newID为刚添加的记录的ID值 ASP+SQL Se
JQ 动态添加行,获取控件 ID
问题描述 JQ 动态添加行,获取控件 ID 做二级联动 第二个下拉框获取的Id不正确 求大神帮忙! 解决方案 给你的combotree增加id配置,在onSelect中通过options得到配置的id,而不是直接引用全局变量rowCount onSelect:function(rec){ var rowCount=$(this).combotree('options').id;///////// //....其他的代码
jsp-JSP从后台获得的数据用EL表达式只能获取第一个ID的数据
问题描述 JSP从后台获得的数据用EL表达式只能获取第一个ID的数据 后边ID为2/3/4等数据改如何获得呢 <s:iterator value="%{#request.data}" var="data3_9" > 获得数据 ${data3_9.time} 只能获得ID为0的相应的数据,接下来ID为1的话改如何获得呢 解决方案 ${data.time}/c:forEach 解决方案二: " ${data.time}/c:forEach &quo
c#-用dataGridView制作表格,在删除时获取选中行ID的时候提示输入字符串格式不正确?
问题描述 用dataGridView制作表格,在删除时获取选中行ID的时候提示输入字符串格式不正确? if (dataGridView1.SelectedRows.Count != 0) { shangpinid = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value.ToString()); sql = string.Format("DELETE FROM shangpin WHERE ID={0}", shang
微信支付 获取预支付ID时 调用官方接口返回为NULL
问题描述 微信支付 获取预支付ID时 调用官方接口返回为NULL 解决方案 没有注册微信支付接口,所以是null.找腾讯注册. 解决方案二: 官方例子是官方例子,微信支付接口是要注册的,人家靠这个盈利.官方例子不一定非要写上具体的ID.有效的ID是一串数字. 具体含义,该网站有相应的标准文本PDF(要积分的).unifiedorder含义是唯一码,具体使用是一串数字.申请注册后就会得到. 微信支付涉及金融,是要经过银行的.该标准是银行发布的.制定者由银行.支付宝.微信支付等不同人员参与.通过后,