mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-06 16:40:32 +00:00
89 lines
1.6 KiB
Go
89 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"os"
|
|
"syscall"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
modkernel32 = syscall.NewLazyDLL("kernel32.dll")
|
|
procSetFileValidData = modkernel32.NewProc("SetFileValidData")
|
|
)
|
|
|
|
func main() {
|
|
var err error
|
|
name := "d:/test.data"
|
|
var size int64 = 1024 * 1024 * 1024 * 4
|
|
|
|
err = os.Truncate(name, size)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
var hwnd HWND
|
|
|
|
err = ShellExecute(hwnd,
|
|
"runas",
|
|
"fsutil.exe",
|
|
"file setValidData d:\\test.data 4294967296",
|
|
"d:\\",
|
|
syscall.SW_HIDE)
|
|
|
|
//err = exec.Command("fsutil", "file", "setValidData", "d:\\test.data", "4294967296").Run()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
file, _ := os.OpenFile(name, os.O_RDWR, 0644)
|
|
defer os.Remove(name)
|
|
defer file.Close()
|
|
defer func() {
|
|
reader := bufio.NewReader(os.Stdin)
|
|
fmt.Println("输入回车结束")
|
|
reader.ReadString('\n')
|
|
}()
|
|
|
|
/*process, err := syscall.GetCurrentProcess()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
var token syscall.Token
|
|
err = syscall.OpenProcessToken(process, syscall.TOKEN_ADJUST_PRIVILEGES|syscall.TOKEN_QUERY, &token)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
|
|
_, _, en := syscall.Syscall(procSetFileValidData.Addr(), 2, file.Fd(), uintptr(size), 0)
|
|
if en != 0 {
|
|
fmt.Println(en)
|
|
return
|
|
}*/
|
|
|
|
buf := []byte{1, 2, 3, 4, 5, 6, 7, 8}
|
|
var (
|
|
tm int64
|
|
)
|
|
|
|
tm = time.Now().UnixNano()
|
|
_, err = file.WriteAt(buf, 0)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Printf("write use:%d\n", toMill(time.Now().UnixNano()-tm))
|
|
|
|
tm = time.Now().UnixNano()
|
|
_, err = file.WriteAt(buf, 1024*1024*1024*2)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Printf("write use:%d\n", toMill(time.Now().UnixNano()-tm))
|
|
}
|
|
|
|
func toMill(nano int64) int64 {
|
|
return nano / int64(time.Millisecond)
|
|
}
|