1// Code generated mksyscall_windows.exe DO NOT EDIT
2
3package hcsshim
4
5import (
6	"syscall"
7	"unsafe"
8
9	"golang.org/x/sys/windows"
10)
11
12var _ unsafe.Pointer
13
14// Do the interface allocations only once for common
15// Errno values.
16const (
17	errnoERROR_IO_PENDING = 997
18)
19
20var (
21	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
22)
23
24// errnoErr returns common boxed Errno values, to prevent
25// allocations at runtime.
26func errnoErr(e syscall.Errno) error {
27	switch e {
28	case 0:
29		return nil
30	case errnoERROR_IO_PENDING:
31		return errERROR_IO_PENDING
32	}
33	// TODO: add more here, after collecting data on the common
34	// error values see on Windows. (perhaps when running
35	// all.bat?)
36	return e
37}
38
39var (
40	modiphlpapi = windows.NewLazySystemDLL("iphlpapi.dll")
41
42	procSetCurrentThreadCompartmentId = modiphlpapi.NewProc("SetCurrentThreadCompartmentId")
43)
44
45func SetCurrentThreadCompartmentId(compartmentId uint32) (hr error) {
46	r0, _, _ := syscall.Syscall(procSetCurrentThreadCompartmentId.Addr(), 1, uintptr(compartmentId), 0, 0)
47	if int32(r0) < 0 {
48		if r0&0x1fff0000 == 0x00070000 {
49			r0 &= 0xffff
50		}
51		hr = syscall.Errno(r0)
52	}
53	return
54}
55