github.com/flavio/docker@v0.1.3-0.20170117145210-f63d1a6eec47/integration-cli/daemon/daemon_windows.go (about) 1 package daemon 2 3 import ( 4 "fmt" 5 "strconv" 6 "syscall" 7 "unsafe" 8 9 "github.com/go-check/check" 10 "golang.org/x/sys/windows" 11 ) 12 13 func openEvent(desiredAccess uint32, inheritHandle bool, name string, proc *windows.LazyProc) (handle syscall.Handle, err error) { 14 namep, _ := syscall.UTF16PtrFromString(name) 15 var _p2 uint32 16 if inheritHandle { 17 _p2 = 1 18 } 19 r0, _, e1 := proc.Call(uintptr(desiredAccess), uintptr(_p2), uintptr(unsafe.Pointer(namep))) 20 handle = syscall.Handle(r0) 21 if handle == syscall.InvalidHandle { 22 err = e1 23 } 24 return 25 } 26 27 func pulseEvent(handle syscall.Handle, proc *windows.LazyProc) (err error) { 28 r0, _, _ := proc.Call(uintptr(handle)) 29 if r0 != 0 { 30 err = syscall.Errno(r0) 31 } 32 return 33 } 34 35 // SignalDaemonDump sends a signal to the daemon to write a dump file 36 func SignalDaemonDump(pid int) { 37 modkernel32 := windows.NewLazySystemDLL("kernel32.dll") 38 procOpenEvent := modkernel32.NewProc("OpenEventW") 39 procPulseEvent := modkernel32.NewProc("PulseEvent") 40 41 ev := "Global\\docker-daemon-" + strconv.Itoa(pid) 42 h2, _ := openEvent(0x0002, false, ev, procOpenEvent) 43 if h2 == 0 { 44 return 45 } 46 pulseEvent(h2, procPulseEvent) 47 } 48 49 func signalDaemonReload(pid int) error { 50 return fmt.Errorf("daemon reload not supported") 51 } 52 53 func cleanupExecRoot(c *check.C, execRoot string) { 54 }