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  }