注册 登录
自由的生活_软路由 返回首页

的个人空间 https://bbs.routerclub.com/?0 [收藏] [复制] [分享] [RSS]

日志

在linux内核中读取硬盘序列号

已有 3802 次阅读2006-11-12 17:08


/*hardid.c*/
#ifndef __KERNEL__
#define __KERNEL__
#endif

#ifndef MODULE
#define MODULE
#endif

#include<linux/errno.h>
#include<linux/mm.h>
#include<linux/string.h>
#include<linux/kernel.h>
#include<linux/major.h>
#include<linux/fs.h>
#include<linux/proc_fs.h>
#include<linux/nfs_fs.h>
#include<linux/nfs_fs_sb.h>
#include<linux/nfs_mount.h>
#include<linux/genhd.h>
#include<linux/netdevice.h>
#include<linux/if_arp.h>
#include<linux/mc146818rtc.h>
#include<linux/smp_lock.h>

#include "ide.h"

#ifdef MODULE
/*for module program*/
#include<linux/module.h>
#endif

#include<asm/processor.h>
#include<asm/page.h>
#include<asm/smp.h>
#include<asm/param.h>
#include<asm/fcntl.h>
#include<asm/uaccess.h>

/*HDIO_GET_IDENTITY*/
ide_drive_t *topsec_get_info_ptr(kdev_t i_rdev)
{
    int major=MAJOR(i_rdev);
    unsigned int h ;
   
    for(h=0;h<MAX_HWIFS;++h)
    {
        ide_hwif_t*hwif=&ide_hwifs[h];
        if(hwif->present&&major==hwif->major)
        {
            unsigned unit=DEVICE_NR(i_rdev);
            if(unit<MAX_DRIVES)
            {
                ide_drive_t*drive=&hwif->drives[unit];
                if(drive->present)
                {
                    return drive ;
                }
            }
            break ;
        }
    }
    return NULL ;
}

#define HARDDISK "/dev/hda"

int topsec_get_hardisk_id(char*buffer)
{
    int len=0 ;
    struct file*filp=NULL ;
    struct inode*inode ;
    ide_drive_t*drive ;
   
    filp=filp_open((char*)HARDDISK,0,0);
    if(filp)
    {
        inode=filp->f_dentry->d_inode ;
        if(!inode||!(inode->i_rdev))
        {
            return-EINVAL ;
        }
        if((drive=topsec_get_info_ptr(inode->i_rdev))==NULL)
        {
            return-ENODEV ;
        }
        memcpy(buffer+len,(char*)drive->id->serial_no,20);
        len+=20 ;
        /* memcpy(buffer+len,(char *)drive->id,sizeof(*drive->id));
        len+=sizeof(*drive->id);*/
        filp_close(filp,NULL);
       
        return len ;
    }
   
    return 0 ;
}

#ifdef MODULE

int init_module(void)
{
    char*buffer=NULL ;
    int i=0,len=0 ;
   
    lock_kernel();
    buffer=(char*)kmalloc(512);
    memset(buffer,0,512);
    len=topsec_get_hardisk_id(buffer);
    if(len>0)
    {
        printk("harddisk serial no is:\n");
        for(;i<len;i++)
        {
            printk("%x",buffer[i]);
        }
        printk("\n");
    }
    kfree(buffer);
    unlock_kernel();
   
    return 0 ;
    /*for module,it must return 0*/
}

void cleanup_module(void)
{
   
}
#endif


make 文 件 如 下 :
DFLAGS=-D __KERNEL__-D MODULE-D __DEBUG__
CFLAGS=-O2-g-Wall-Wstrict-prototypes-pipe-I/usr/src/linux/drivers/block-I/usr/include/linux/

hardid.o :
hardid.c
gcc-c hardid.c $(DFLAGS)$(CFLAGS)-o hardid.o

clean :
rm-f*.o

然 后 :
insmod hardid.o
即 可

清 除 可 :
rmmod hardid
make clean


路过

雷人

握手

鲜花

鸡蛋

发表评论 评论 (16777109 个评论)

flicker 彩虹炫 | flicker 匿名卡 | Google Blog 2006-12-10 01:35
All information about Google search engine and services you can find in our blog.
flicker 彩虹炫 | flicker 匿名卡 | Home Finance 2006-12-10 03:26
Mobile Home Finance
flicker 彩虹炫 | flicker 匿名卡 | notebook bag fo 2006-12-11 20:35
toshiba sat pro laptop uk
flicker 彩虹炫 | flicker 匿名卡 | christian debt 2006-12-11 21:20
countrywide home loan corporate office
flicker 彩虹炫 | flicker 匿名卡 | debt high mortg 2006-12-11 22:04
jvc mini note pc laptop
flicker 彩虹炫 | flicker 匿名卡 | bad consolidati 2006-12-11 22:44
compaq laptop hard drive
flicker 彩虹炫 | flicker 匿名卡 | long stay trave 2006-12-11 23:15
wireless internet card for laptop
flicker 彩虹炫 | flicker 匿名卡 | toshiba tecra 8 2006-12-11 23:48
free mortgage calculator java script
flicker 彩虹炫 | flicker 匿名卡 | 1st rate mortga 2006-12-12 00:24
buyer mortgage note second
flicker 彩虹炫 | flicker 匿名卡 | laptop wholesal 2006-12-12 00:56
customer dell service
flicker 彩虹炫 | flicker 匿名卡 | installing linu 2006-12-12 01:22
california dental insurance plan
flicker 彩虹炫 | flicker 匿名卡 | 2nd mortgage lo 2006-12-12 02:01
targus xl notebook backpack
flicker 彩虹炫 | flicker 匿名卡 | consumer debt m 2006-12-12 02:49
buy toshiba sat pro laptop
flicker 彩虹炫 | flicker 匿名卡 | kensington lapt 2006-12-12 03:21
dental group insurance plan
flicker 彩虹炫 | flicker 匿名卡 | adult by dvd ma 2006-12-12 03:59
buy evo notebook n800c laptop
flicker 彩虹炫 | flicker 匿名卡 | verizon rigtone 2006-12-13 01:56
ringtones samsung
flicker 彩虹炫 | flicker 匿名卡 | secret ringtone 2006-12-13 02:24
funny ringtones
flicker 彩虹炫 | flicker 匿名卡 | http://vewiri.1 2006-12-13 02:51
Philips Ringtones
flicker 彩虹炫 | flicker 匿名卡 | Free Ringtones 2006-12-13 03:19
Polyphonic Ringtones
flicker 彩虹炫 | flicker 匿名卡 | Polyphonic Ring 2006-12-13 03:46
Motorola ringtones

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2026-6-17 17:54 , Processed in 0.034165 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

返回顶部