//go:build windows && (386 || arm || mips || mipsle)

package yu_file

import (
	yu_sys "gogs.qqck.cn/s/tools/sys"
	"time"
)

func Openfile(name string, dwDesiredAccess, dwShareMode, dwCreationDisposition, dwFlagsAndAttributes uintptr) uintptr {
_open:
	j_fd, _, j_errno := yu_sys.CreateFileW.Call(yu_sys.S{yu_sys.Unicode, name}, dwDesiredAccess, dwShareMode, 0, dwCreationDisposition, dwFlagsAndAttributes, 0)
	if j_errno == error_SHARING_VIOLATION {
		time.Sleep(time.Microsecond)
		goto _open
	} else if int32(j_fd) == -1 {
		return 0
	}
	return j_fd
}

// func setFilePointerEx(fd uintptr, set int64, newFilePointer *int64, whence uintptr) bool {
// 	var j_r1 uintptr
// 	if newFilePointer == nil {
// 		j_r1, _, _ = syscall.SyscallN(addrSetFilePointerEx, fd, uintptr(set), 0, whence)
// 	} else {
// 		j_r1, _, _ = syscall.SyscallN(addrSetFilePointerEx, fd, uintptr(set), uintptr(unsafe.Pointer(newFilePointer)), whence)
// 	}
// 	if j_r1 == 0 {
// 		return false
// 	}
// 	return true
// }
