【问题标题】:Go Windows to pass Flag to memory map syscall转到 Windows 将标志传递给内存映射系统调用
【发布时间】:2023-03-04 20:01:01
【问题描述】:

在 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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-06
      • 2011-08-11
      • 1970-01-01
      • 2013-07-19
      • 2011-02-18
      • 2019-04-22
      • 1970-01-01
      相关资源
      最近更新 更多