api_windows.go 918 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. //go:build windows
  2. package yu_file
  3. import yu_sys "gogs.qqck.cn/s/tools/sys"
  4. const (
  5. error_FILE_NOT_FOUND = 0x2 // 系统找不到指定的文件
  6. error_SHARING_VIOLATION = 0x20 // 进程无法访问文件,因为另一个程序正在使用此文件
  7. )
  8. func getFileSizeEx(fd uintptr) (size int64, success bool) {
  9. success = yu_sys.GetFileSizeEx.CallBool(fd, &size)
  10. return
  11. }
  12. func readFileBuf(fd uintptr, buf []byte) (result int64) {
  13. j_len := len(buf)
  14. if j_len < 1 {
  15. return
  16. }
  17. yu_sys.ReadFile.Call(fd, buf, j_len, &result, 0)
  18. return
  19. }
  20. func readFileSize(fd uintptr, size int) []byte {
  21. if size < 1 {
  22. return nil
  23. }
  24. j_buf := make([]byte, size)
  25. if !yu_sys.ReadFile.CallBool(fd, j_buf, size, &size, 0) {
  26. return nil
  27. }
  28. return j_buf[:size]
  29. }
  30. func writeFile(fd uintptr, buf []byte) bool {
  31. if len(buf) < 1 {
  32. return true
  33. }
  34. j_len := 0
  35. return yu_sys.WriteFile.CallBool(fd, buf, len(buf), &j_len, 0)
  36. }