go語言使用系統函數獲取硬盤sn等信息


package main

import (
    "golang.org/x/sys/unix"
    "log"
    "os"
    "syscall"
    "unsafe"
)

func FatalError(err error) {
    if err != nil {
        log.Fatal(err)
    }
}

func main() {
    var hd unix.HDDriveID
    fd, err := unix.Open(os.Args[1], os.O_RDONLY, 0660)
    FatalError(err)
    _, _, ErrOn := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), unix.HDIO_GET_IDENTITY, uintptr(unsafe.Pointer(&hd)))
    if unix.ErrnoName(ErrOn) != "" {
        log.Fatal("Error: ", ErrOn)
    }

    var sn []byte
    var model []byte

    for _, char := range hd.Serial_no {
        sn = append(sn, char)
    }

    for _, char := range hd.Model {
        model = append(model, char)
    }

    log.Println(string(sn))
    log.Println(string(model))
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章