...
1
2
3 package wclayer
4
5
6
7
8 import (
9 "context"
10 "syscall"
11
12 "github.com/Microsoft/go-winio/pkg/guid"
13 "github.com/sirupsen/logrus"
14 )
15
16
30
31 type driverInfo struct {
32 Flavour int
33 HomeDirp *uint16
34 }
35
36 var (
37 utf16EmptyString uint16
38 stdDriverInfo = driverInfo{1, &utf16EmptyString}
39 )
40
41
72 type WC_LAYER_DESCRIPTOR struct {
73 LayerId guid.GUID
74 Flags uint32
75 Pathp *uint16
76 }
77
78 func layerPathsToDescriptors(ctx context.Context, parentLayerPaths []string) ([]WC_LAYER_DESCRIPTOR, error) {
79
80 var layers []WC_LAYER_DESCRIPTOR
81
82 for i := 0; i < len(parentLayerPaths); i++ {
83 g, err := LayerID(ctx, parentLayerPaths[i])
84 if err != nil {
85 logrus.WithError(err).Debug("Failed to convert name to guid")
86 return nil, err
87 }
88
89 p, err := syscall.UTF16PtrFromString(parentLayerPaths[i])
90 if err != nil {
91 logrus.WithError(err).Debug("Failed conversion of parentLayerPath to pointer")
92 return nil, err
93 }
94
95 layers = append(layers, WC_LAYER_DESCRIPTOR{
96 LayerId: g,
97 Flags: 0,
98 Pathp: p,
99 })
100 }
101
102 return layers, nil
103 }
104
View as plain text