memory - Go Windows 将 Flag 传递给内存映射系统调用

标签 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)

但我没有看到任何用于 Windows 的 CreateFileMapping 标志参数。

有谁知道如何将标志传递给 CreateFileMapping 函数,例如 syscall.MAP_SHARED|syscall.XXX

最佳答案

看起来您可以从 the Windows reference for that syscall 中获取保护标志的整数值.似乎没有与 Unix-y 标志的一对一映射,例如当您传递调用文件名时,您似乎默认获得共享 map ,而不是为共享 map 设置标志。

关于memory - Go Windows 将 Flag 传递给内存映射系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442474/

相关文章:

将 vector 的值转换为写入系统调用的字符指针

linux - go package "Syscall()"中的 "syscall"是什么意思?

c - 在c程序中,为什么osx中的字符串(从strcpy复制)的释放内存不可用?

c - Malloc 与自定义分配器 : Malloc has a lot of overhead. 为什么?

arrays - 如何将 JOIN 映射到具有子结构数组的结构数组

c - 调用 open 时如何调用 sys_open 而不是 sys_openat

iphone - NSDictionary 的字节大小

linux - 内核线程如何只为它们自己请求页面?

multithreading - 继续 OS X - 两个库调用系统函数

go - 如何使用 Golang 询问 "Yes"或 "No"