1234567891011121314151617181920212223242526272829303132 |
- // Copyright 2016 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package os
- import (
- "internal/syscall/windows"
- "syscall"
- )
- func getModuleFileName(handle syscall.Handle) (string, error) {
- n := uint32(1024)
- var buf []uint16
- for {
- buf = make([]uint16, n)
- r, err := windows.GetModuleFileName(handle, &buf[0], n)
- if err != nil {
- return "", err
- }
- if r < n {
- break
- }
- // r == n means n not big enough
- n += 1024
- }
- return syscall.UTF16ToString(buf), nil
- }
- func executable() (string, error) {
- return getModuleFileName(0)
- }
|