|
|
@@ -206,6 +206,7 @@ var (
|
|
|
procSetInformationJobObject = modkernel32.NewProc("SetInformationJobObject")
|
|
|
procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent")
|
|
|
procGetProcessId = modkernel32.NewProc("GetProcessId")
|
|
|
+ procOpenThread = modkernel32.NewProc("OpenThread")
|
|
|
procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW")
|
|
|
procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW")
|
|
|
procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW")
|
|
|
@@ -2223,6 +2224,25 @@ func GetProcessId(process Handle) (id uint32, err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+func OpenThread(da uint32, inheritHandle bool, tid uint32) (handle Handle, err error) {
|
|
|
+ var _p0 uint32
|
|
|
+ if inheritHandle {
|
|
|
+ _p0 = 1
|
|
|
+ } else {
|
|
|
+ _p0 = 0
|
|
|
+ }
|
|
|
+ r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(tid))
|
|
|
+ handle = Handle(r0)
|
|
|
+ if handle == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {
|
|
|
r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))
|
|
|
if r1 == 0 {
|