func()

in providers/windows/device_windows.go [93:108]


func (mapper *deviceMapper) getDevice(driveLetter byte) (string, error) {
	driveBuf := [3]uint16{uint16(driveLetter), ':', 0}

	for bufSize := 64; bufSize <= 1024; bufSize *= 2 {
		deviceBuf := make([]uint16, bufSize)
		n, err := mapper.QueryDosDevice(&driveBuf[0], &deviceBuf[0], uint32(len(deviceBuf)))
		if err != nil {
			if err == windows.ERROR_INSUFFICIENT_BUFFER {
				continue
			}
			return "", err
		}
		return windows.UTF16ToString(deviceBuf[:n]), nil
	}
	return "", windows.ERROR_INSUFFICIENT_BUFFER
}