转到Windows将Flag传递给内存映射系统调用

时间:2015-12-23 19:30:44

标签: memory go system-calls memory-mapped-files

在Unix中,Go可以这样做:

// func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error)
syscall.Mmap(., ., ., ., syscall.MAP_SHARED|syscall.XXX)

在Windows中,您可以使用:

https://github.com/golang/go/blob/master/src/syscall/zsyscall_windows.go#L970-L981

// func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error)
syscall.CreateFileMapping(., ., syscall.PAGE_READONLY, ., ., nil)

但我没有看到CreateFileMapping对Windows的任何标记参数。

有人知道如何将标记传递给CreateFileMapping函数syscall.MAP_SHARED|syscall.XXX吗?

1 个答案:

答案 0 :(得分:0)

看起来您可以从the Windows reference for that syscall获取保护标志的整数值。似乎没有与Unix-y标志的一对一映射,例如而不是拥有共享地图的标志,当您将调用文件传递给文件名时,默认情况下会显示共享地图。