Skip to content

Commit

Permalink
rebase on master
Browse files Browse the repository at this point in the history
  • Loading branch information
FrankSpitulski committed Oct 20, 2022
1 parent b515acb commit d7c7912
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions disk/disk_windows.go
Expand Up @@ -96,7 +96,7 @@ func PartitionsWithContext(ctx context.Context, all bool) ([]PartitionStat, erro
}
for _, v := range lpBuffer {
if v >= 65 && v <= 90 {
i, err := getVolumeInformation(string(v))
i, err := getVolumeInformation(string(v), &warnings)
if err != nil && !errors.Is(err, errDeviceNotReady) && !errors.Is(err, errInvalidDriveType) {
continue
}
Expand Down Expand Up @@ -161,7 +161,7 @@ func IOCountersWithContext(ctx context.Context, names ...string) (map[string]IOC
return drivemap, err
}

i, err := getVolumeInformation(vStr)
i, err := getVolumeInformation(vStr, nil)
if err != nil {
return nil, err
}
Expand All @@ -183,7 +183,7 @@ func IOCountersWithContext(ctx context.Context, names ...string) (map[string]IOC
}

func SerialNumberWithContext(ctx context.Context, name string) (string, error) {
i, err := getVolumeInformation(name)
i, err := getVolumeInformation(name, nil)
if err != nil {
return "", err
}
Expand All @@ -192,7 +192,7 @@ func SerialNumberWithContext(ctx context.Context, name string) (string, error) {
}

func LabelWithContext(ctx context.Context, name string) (string, error) {
i, err := getVolumeInformation(name)
i, err := getVolumeInformation(name, nil)
if err != nil {
return "", err
}
Expand All @@ -214,12 +214,16 @@ var (
)

// getVolumeInformation returns all the information gathered from GetVolumeInformationW
func getVolumeInformation(name string) (*volumeInformation, error) {
func getVolumeInformation(name string, warnings *common.Warnings) (*volumeInformation, error) {
path := name + ":"
typepath, _ := windows.UTF16PtrFromString(path)
typeret, _, _ := procGetDriveType.Call(uintptr(unsafe.Pointer(typepath)))
if typeret == 0 {
return nil, windows.GetLastError()
err := windows.GetLastError()
if warnings != nil {
warnings.Add(err)
}
return nil, err
}

if typeret == windows.DRIVE_REMOVABLE || typeret == windows.DRIVE_FIXED || typeret == windows.DRIVE_REMOTE || typeret == windows.DRIVE_CDROM {
Expand All @@ -242,6 +246,9 @@ func getVolumeInformation(name string) (*volumeInformation, error) {
if typeret == 5 || typeret == 2 {
return nil, errDeviceNotReady // device is not ready will happen if there is no disk in the drive
}
if warnings != nil {
warnings.Add(err)
}
return nil, err
}

Expand Down

0 comments on commit d7c7912

Please sign in to comment.