mirror of
https://github.com/golang/go
synced 2024-11-22 09:44:40 -07:00
syscall: extract an ExampleLoadLibrary from comment
while we are at it, fix some out-of-date comments. R=golang-dev, dave, r CC=golang-dev https://golang.org/cl/6498054
This commit is contained in:
parent
db3474f1bb
commit
f78ead3ca4
@ -3,5 +3,5 @@
|
|||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//
|
//
|
||||||
// System calls for 386, Windows are implemented in ../runtime/windows/syscall.goc
|
// System calls for 386, Windows are implemented in ../runtime/syscall_windows.goc
|
||||||
//
|
//
|
||||||
|
@ -3,5 +3,5 @@
|
|||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//
|
//
|
||||||
// System calls for amd64, Windows are implemented in ../runtime/windows/syscall.goc
|
// System calls for amd64, Windows are implemented in ../runtime/syscall_windows.goc
|
||||||
//
|
//
|
||||||
|
@ -15,43 +15,6 @@ type Handle uintptr
|
|||||||
|
|
||||||
const InvalidHandle = ^Handle(0)
|
const InvalidHandle = ^Handle(0)
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
small demo to detect version of windows you are running:
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"syscall"
|
|
||||||
)
|
|
||||||
|
|
||||||
func abort(funcname string, err error) {
|
|
||||||
panic(funcname + " failed: " + err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
func print_version(v uint32) {
|
|
||||||
major := byte(v)
|
|
||||||
minor := uint8(v >> 8)
|
|
||||||
build := uint16(v >> 16)
|
|
||||||
print("windows version ", major, ".", minor, " (Build ", build, ")\n")
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
h, err := syscall.LoadLibrary("kernel32.dll")
|
|
||||||
if err != nil {
|
|
||||||
abort("LoadLibrary", err)
|
|
||||||
}
|
|
||||||
defer syscall.FreeLibrary(h)
|
|
||||||
proc, err := syscall.GetProcAddress(h, "GetVersion")
|
|
||||||
if err != nil {
|
|
||||||
abort("GetProcAddress", err)
|
|
||||||
}
|
|
||||||
r, _, _ := syscall.Syscall(uintptr(proc), 0, 0, 0, 0)
|
|
||||||
print_version(uint32(r))
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
// StringToUTF16 is deprecated. Use UTF16FromString instead.
|
// StringToUTF16 is deprecated. Use UTF16FromString instead.
|
||||||
// If s contains a NUL byte this function panics instead of
|
// If s contains a NUL byte this function panics instead of
|
||||||
// returning an error.
|
// returning an error.
|
||||||
@ -142,7 +105,7 @@ func (e Errno) Timeout() bool {
|
|||||||
// Converts a Go function to a function pointer conforming
|
// Converts a Go function to a function pointer conforming
|
||||||
// to the stdcall calling convention. This is useful when
|
// to the stdcall calling convention. This is useful when
|
||||||
// interoperating with Windows code requiring callbacks.
|
// interoperating with Windows code requiring callbacks.
|
||||||
// Implemented in ../runtime/windows/syscall.goc
|
// Implemented in ../runtime/syscall_windows.goc
|
||||||
func NewCallback(fn interface{}) uintptr
|
func NewCallback(fn interface{}) uintptr
|
||||||
|
|
||||||
// windows api calls
|
// windows api calls
|
||||||
|
@ -49,3 +49,24 @@ func TestWin32finddata(t *testing.T) {
|
|||||||
t.Fatalf("memory corruption: want=%d got=%d", want, x.got)
|
t.Fatalf("memory corruption: want=%d got=%d", want, x.got)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func abort(funcname string, err error) {
|
||||||
|
panic(funcname + " failed: " + err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExampleLoadLibrary() {
|
||||||
|
h, err := syscall.LoadLibrary("kernel32.dll")
|
||||||
|
if err != nil {
|
||||||
|
abort("LoadLibrary", err)
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(h)
|
||||||
|
proc, err := syscall.GetProcAddress(h, "GetVersion")
|
||||||
|
if err != nil {
|
||||||
|
abort("GetProcAddress", err)
|
||||||
|
}
|
||||||
|
r, _, _ := syscall.Syscall(uintptr(proc), 0, 0, 0, 0)
|
||||||
|
major := byte(r)
|
||||||
|
minor := uint8(r >> 8)
|
||||||
|
build := uint16(r >> 16)
|
||||||
|
print("windows version ", major, ".", minor, " (Build ", build, ")\n")
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user