go - Hvordan får du antallet af harddisk (ikke partitioner!) på Windows i Golang?

Indlæg af Hanne Mølgaard Plasc

Problem



Dette spørgsmål er forskelligt fra Hvordan kan jeg få en liste over alle drev på Windows ved hjælp af Golang?


Jeg ved hvordan man får partitionerne på harddisken, men hvad med antallet af harddisk?
Jeg forsøgte at bruge diskpark, men synes ikke om det.

Indtast billedbeskrivelse her [5]


Er der nogle indfødte, der skal gennemføres?


@Dippo saids: Jeg tror jeg fandt en pakke: https://github.com/StackExchange/wmi[6]


Og det virker.
Thx alle.


Her er koden.


Gopkg.toml:


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


og go-koden:


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))
}

Bedste reference