-
Notifications
You must be signed in to change notification settings - Fork 0
/
kernel32.go
44 lines (37 loc) · 1.16 KB
/
kernel32.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package win
import (
//"reflect"
"syscall"
"unsafe"
)
var (
// Library
kernel32 = syscall.NewLazyDLL("kernel.dll")
// Functions
procMultiByteToWideChar = kernel32.NewProc("MultiByteToWideChar")
procWideCharToMultiByte = kernel32.NewProc("WideCharToMultiByte")
)
func MultiByteToWideChar(CodePage UINT, dwFlags uint32, lpMultiByteStr *byte, cchMultiByte int32,
lpWideCharStr *byte, cchWideChar int32) int32 {
ret, _, _ := procMultiByteToWideChar.Call(
uintptr(CodePage),
uintptr(dwFlags),
uintptr(unsafe.Pointer(lpMultiByteStr)),
uintptr(cchMultiByte),
uintptr(unsafe.Pointer(lpWideCharStr)),
uintptr(cchWideChar))
return int32(ret)
}
func WideCharToMultiByte(CodePage UINT, dwFlags uint32, lpWideCharStr *WCHAR, cchWideChar int32,
lpMultiByteStr *byte, cchMultiByte int32, lpDefaultChar *byte, pfUsedDefaultChar *bool) int32 {
ret, _, _ := procWideCharToMultiByte.Call(
uintptr(CodePage),
uintptr(dwFlags),
uintptr(unsafe.Pointer(lpWideCharStr)),
uintptr(cchWideChar),
uintptr(unsafe.Pointer(lpMultiByteStr)),
uintptr(cchMultiByte),
uintptr(unsafe.Pointer(lpDefaultChar)),
uintptr(unsafe.Pointer(pfUsedDefaultChar)))
return int32(ret)
}