diff options
Diffstat (limited to 'service/zsyscall_windows.go')
-rw-r--r-- | service/zsyscall_windows.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/service/zsyscall_windows.go b/service/zsyscall_windows.go index 38983370..9819b1f2 100644 --- a/service/zsyscall_windows.go +++ b/service/zsyscall_windows.go @@ -55,6 +55,7 @@ var ( procInitializeAcl = modadvapi32.NewProc("InitializeAcl") procMakeAbsoluteSD = modadvapi32.NewProc("MakeAbsoluteSD") procMakeSelfRelativeSD = modadvapi32.NewProc("MakeSelfRelativeSD") + procSetTokenInformation = modadvapi32.NewProc("SetTokenInformation") procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") procNotifyServiceStatusChangeW = modadvapi32.NewProc("NotifyServiceStatusChangeW") @@ -234,6 +235,18 @@ func makeSelfRelativeSd(absoluteSecurityDescriptor *byte, relativeSecurityDescri return } +func setTokenInformation(token windows.Token, infoClass uint32, info *byte, infoSize uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoSize), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func createEnvironmentBlock(block *uintptr, token windows.Token, inheritExisting bool) (err error) { var _p0 uint32 if inheritExisting { |