func (container *container) Shutdown() error {
	err := container.system.Shutdown(context.Background())
	if err != nil {
		return convertSystemError(err, container)
	}
	return &ContainerError{Container: container, Err: ErrVmcomputeOperationPending, Operation: "hcsshim::ComputeSystem::Shutdown"}
}
Shutdown requests a container shutdown, but it may not actually be shutdown until Wait() succeeds.
package hcsshim
import (
	"context"
	"fmt"
	"os"
	"sync"
	"time"
	"github.com/Microsoft/hcsshim/internal/hcs"
	"github.com/Microsoft/hcsshim/internal/hcs/schema1"
	"github.com/Microsoft/hcsshim/internal/mergemaps"
)
type ContainerProperties = schema1.ContainerProperties
type MemoryStats = schema1.MemoryStats
type ProcessorStats = schema1.ProcessorStats
type StorageStats = schema1.StorageStats
type NetworkStats = schema1.NetworkStats
type Statistics = schema1.Statistics
type ProcessListItem = schema1.ProcessListItem
type MappedVirtualDiskController = schema1.MappedVirtualDiskController
type RequestType = schema1.RequestType
type ResourceType = schema1.ResourceType
const (
	Add     = schema1.Add
	Remove  = schema1.Remove
	Network = schema1.Network
)
type ResourceModificationRequestResponse = schema1.ResourceModificationRequestResponse
type container struct {
	system   *hcs.System
	waitOnce sync.Once
	waitErr  error
	waitCh   chan struct{}
}
var createContainerAdditionalJSON []byte
func init() {
	createContainerAdditionalJSON = ([]byte)(os.Getenv("HCSSHIM_CREATECONTAINER_ADDITIONALJSON"))
}
func CreateContainer(id string, c *ContainerConfig) (Container, error) {
	fullConfig, err := mergemaps.MergeJSON(c, createContainerAdditionalJSON)
	if err != nil {
		return nil, fmt.Errorf("failed to merge additional JSON '%s': %s", createContainerAdditionalJSON, err)
	}
	system, err := hcs.CreateComputeSystem(context.Background(), id, fullConfig)
	if err != nil {
		return nil, err
	}
	return &container{system: system}, err
}
func OpenContainer(id string) (Container, error) {
	system, err := hcs.OpenComputeSystem(context.Background(), id)
	if err != nil {
		return nil, err
	}
	return &container{system: system}, err
}
func GetContainers(q ComputeSystemQuery) ([]ContainerProperties, error) {
	return hcs.GetComputeSystems(context.Background(), q)
}
func (container *container) Start() error {
	return convertSystemError(container.system.Start(context.Background()), container)
}