Как вы получаете номера жесткого диска (не разделов!) На Windows в golang? - PullRequest
0 голосов
/ 25 апреля 2018

Этот вопрос отличается от Как получить список всех дисков в Windows, используя golang?

Я знаю, как получить разделы жесткого диска, но как насчет номеров жесткого диска? Я пытался использовать diskpark, но мне не понравилось.
enter image description here

Есть ли какой-нибудь нативный способ реализации?

@ Диппо сказал: я думаю, что нашел пакет: https://github.com/StackExchange/wmi

И это работает. Спасибо всем.

Вот код.

Gopkg.toml:

required = ["github.com/stackexchange/wmi"]

и код доступа:

func getDiskDrivers() uint8 {
    type Win32_DiskDrive struct {
        Caption      string
        Name         string
        DeviceID     string
        Model        string
        Index        int
        Partitions   int
        Size         int
        PNPDeviceID  string
        Status       string
        SerialNumber string
        Manufacturer string
        MediaType    string
        Description  string
        SystemName   string
    }

    var dst []Win32_DiskDrive

    query := wmi.CreateQuery(&dst, "")
    if err := wmi.Query(query, &dst); err != nil {
        log.Println(err.Error())
        return 0
    }

    //for key, value := range dst {
    //  log.Println(fmt.Sprintf(`Disk%d: %v`, key+1, value))
    //}

    return uint8(len(dst))
}
...