|
@@ -11,6 +11,31 @@ import (
|
|
|
|
|
|
var _ unsafe.Pointer
|
|
var _ unsafe.Pointer
|
|
|
|
|
|
|
|
+// Do the interface allocations only once for common
|
|
|
|
+// Errno values.
|
|
|
|
+const (
|
|
|
|
+ errnoERROR_IO_PENDING = 997
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+var (
|
|
|
|
+ errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+// errnoErr returns common boxed Errno values, to prevent
|
|
|
|
+// allocations at runtime.
|
|
|
|
+func errnoErr(e syscall.Errno) error {
|
|
|
|
+ switch e {
|
|
|
|
+ case 0:
|
|
|
|
+ return nil
|
|
|
|
+ case errnoERROR_IO_PENDING:
|
|
|
|
+ return errERROR_IO_PENDING
|
|
|
|
+ }
|
|
|
|
+ // TODO: add more here, after collecting data on the common
|
|
|
|
+ // error values see on Windows. (perhaps when running
|
|
|
|
+ // all.bat?)
|
|
|
|
+ return e
|
|
|
|
+}
|
|
|
|
+
|
|
var (
|
|
var (
|
|
modkernel32 = windows.NewLazySystemDLL("kernel32.dll")
|
|
modkernel32 = windows.NewLazySystemDLL("kernel32.dll")
|
|
modwinmm = windows.NewLazySystemDLL("winmm.dll")
|
|
modwinmm = windows.NewLazySystemDLL("winmm.dll")
|
|
@@ -27,6 +52,8 @@ var (
|
|
procWaitNamedPipeW = modkernel32.NewProc("WaitNamedPipeW")
|
|
procWaitNamedPipeW = modkernel32.NewProc("WaitNamedPipeW")
|
|
procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo")
|
|
procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo")
|
|
procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW")
|
|
procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW")
|
|
|
|
+ procLocalAlloc = modkernel32.NewProc("LocalAlloc")
|
|
|
|
+ procRtlCopyMemory = modkernel32.NewProc("RtlCopyMemory")
|
|
procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW")
|
|
procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW")
|
|
procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW")
|
|
procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW")
|
|
procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW")
|
|
procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW")
|
|
@@ -51,7 +78,7 @@ func cancelIoEx(file syscall.Handle, o *syscall.Overlapped) (err error) {
|
|
r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(file), uintptr(unsafe.Pointer(o)), 0)
|
|
r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(file), uintptr(unsafe.Pointer(o)), 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -64,7 +91,7 @@ func createIoCompletionPort(file syscall.Handle, port syscall.Handle, key uintpt
|
|
newport = syscall.Handle(r0)
|
|
newport = syscall.Handle(r0)
|
|
if newport == 0 {
|
|
if newport == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -76,7 +103,7 @@ func getQueuedCompletionStatus(port syscall.Handle, bytes *uint32, key *uintptr,
|
|
r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(port), uintptr(unsafe.Pointer(bytes)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(o)), uintptr(timeout), 0)
|
|
r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(port), uintptr(unsafe.Pointer(bytes)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(o)), uintptr(timeout), 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -88,7 +115,7 @@ func setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err erro
|
|
r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(h), uintptr(flags), 0)
|
|
r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(h), uintptr(flags), 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -106,7 +133,7 @@ func connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) {
|
|
r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(o)), 0)
|
|
r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(o)), 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -128,7 +155,7 @@ func _createNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances
|
|
handle = syscall.Handle(r0)
|
|
handle = syscall.Handle(r0)
|
|
if handle == syscall.InvalidHandle {
|
|
if handle == syscall.InvalidHandle {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -150,7 +177,7 @@ func _createFile(name *uint16, access uint32, mode uint32, sa *securityAttribute
|
|
handle = syscall.Handle(r0)
|
|
handle = syscall.Handle(r0)
|
|
if handle == syscall.InvalidHandle {
|
|
if handle == syscall.InvalidHandle {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -171,7 +198,7 @@ func _waitNamedPipe(name *uint16, timeout uint32) (err error) {
|
|
r1, _, e1 := syscall.Syscall(procWaitNamedPipeW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(timeout), 0)
|
|
r1, _, e1 := syscall.Syscall(procWaitNamedPipeW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(timeout), 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -183,7 +210,7 @@ func getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSiz
|
|
r1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 0)
|
|
r1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -195,7 +222,7 @@ func getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *u
|
|
r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0)
|
|
r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -203,6 +230,17 @@ func getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *u
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func localAlloc(uFlags uint32, length uint32) (ptr uintptr) {
|
|
|
|
+ r0, _, _ := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(uFlags), uintptr(length), 0)
|
|
|
|
+ ptr = uintptr(r0)
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func copyMemory(dst uintptr, src uintptr, length uint32) {
|
|
|
|
+ syscall.Syscall(procRtlCopyMemory.Addr(), 3, uintptr(dst), uintptr(src), uintptr(length))
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
func lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) {
|
|
func lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) {
|
|
var _p0 *uint16
|
|
var _p0 *uint16
|
|
_p0, err = syscall.UTF16PtrFromString(accountName)
|
|
_p0, err = syscall.UTF16PtrFromString(accountName)
|
|
@@ -216,7 +254,7 @@ func _lookupAccountName(systemName *uint16, accountName *uint16, sid *byte, sidS
|
|
r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidSize)), uintptr(unsafe.Pointer(refDomain)), uintptr(unsafe.Pointer(refDomainSize)), uintptr(unsafe.Pointer(sidNameUse)), 0, 0)
|
|
r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidSize)), uintptr(unsafe.Pointer(refDomain)), uintptr(unsafe.Pointer(refDomainSize)), uintptr(unsafe.Pointer(sidNameUse)), 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -228,7 +266,7 @@ func convertSidToStringSid(sid *byte, str **uint16) (err error) {
|
|
r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(str)), 0)
|
|
r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(str)), 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -249,7 +287,7 @@ func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision
|
|
r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0)
|
|
r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -261,7 +299,7 @@ func convertSecurityDescriptorToStringSecurityDescriptor(sd *byte, revision uint
|
|
r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(secInfo), uintptr(unsafe.Pointer(sddl)), uintptr(unsafe.Pointer(sddlSize)), 0)
|
|
r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(secInfo), uintptr(unsafe.Pointer(sddl)), uintptr(unsafe.Pointer(sddlSize)), 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -284,7 +322,7 @@ func getFileInformationByHandleEx(h syscall.Handle, class uint32, buffer *byte,
|
|
r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 0, 0)
|
|
r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -296,7 +334,7 @@ func setFileInformationByHandle(h syscall.Handle, class uint32, buffer *byte, si
|
|
r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 0, 0)
|
|
r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -315,7 +353,7 @@ func adjustTokenPrivileges(token windows.Token, releaseAll bool, input *byte, ou
|
|
success = r0 != 0
|
|
success = r0 != 0
|
|
if true {
|
|
if true {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -327,7 +365,7 @@ func impersonateSelf(level uint32) (err error) {
|
|
r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(level), 0, 0)
|
|
r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(level), 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -339,7 +377,7 @@ func revertToSelf() (err error) {
|
|
r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)
|
|
r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -357,7 +395,7 @@ func openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool,
|
|
r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(accessMask), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)
|
|
r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(accessMask), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -389,7 +427,7 @@ func _lookupPrivilegeValue(systemName *uint16, name *uint16, luid *uint64) (err
|
|
r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))
|
|
r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -410,7 +448,7 @@ func _lookupPrivilegeName(systemName *uint16, luid *uint64, buffer *uint16, size
|
|
r1, _, e1 := syscall.Syscall6(procLookupPrivilegeNameW.Addr(), 4, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(luid)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), 0, 0)
|
|
r1, _, e1 := syscall.Syscall6(procLookupPrivilegeNameW.Addr(), 4, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(luid)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -431,7 +469,7 @@ func _lookupPrivilegeDisplayName(systemName *uint16, name *uint16, buffer *uint1
|
|
r1, _, e1 := syscall.Syscall6(procLookupPrivilegeDisplayNameW.Addr(), 5, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(languageId)), 0)
|
|
r1, _, e1 := syscall.Syscall6(procLookupPrivilegeDisplayNameW.Addr(), 5, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(languageId)), 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -459,7 +497,7 @@ func backupRead(h syscall.Handle, b []byte, bytesRead *uint32, abort bool, proce
|
|
r1, _, e1 := syscall.Syscall9(procBackupRead.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesRead)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 0, 0)
|
|
r1, _, e1 := syscall.Syscall9(procBackupRead.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesRead)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|
|
@@ -487,7 +525,7 @@ func backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, p
|
|
r1, _, e1 := syscall.Syscall9(procBackupWrite.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesWritten)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 0, 0)
|
|
r1, _, e1 := syscall.Syscall9(procBackupWrite.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesWritten)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 0, 0)
|
|
if r1 == 0 {
|
|
if r1 == 0 {
|
|
if e1 != 0 {
|
|
if e1 != 0 {
|
|
- err = error(e1)
|
|
|
|
|
|
+ err = errnoErr(e1)
|
|
} else {
|
|
} else {
|
|
err = syscall.EINVAL
|
|
err = syscall.EINVAL
|
|
}
|
|
}
|