windows - os.File.SetReadDealine : file type does not support deadline

标签 windows go

我用的是win10和go1.11 windows/amd64

deviceid, err := getdeviceid(config.PlatformSpecificParams.ComponentID)
if err != nil {
    return nil, err
}

path := "\\\\.\\Global\\" + deviceid + ".tap"
pathp, err := syscall.UTF16PtrFromString(path)
if err != nil {
    return nil, err
}

fileFd, err := syscall.CreateFile(  pathp,
                                    syscall.GENERIC_READ|syscall.GENERIC_WRITE,
                                    uint32(syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE),
                                    nil,
                                    syscall.OPEN_EXISTING,
                                    syscall.FILE_ATTRIBUTE_SYSTEM|syscall.FILE_FLAG_OVERLAPPED,
                                    0)
……

file := os.NewFile(uintptr(fileFd), "nic")

……

file.SetReadDeadline(time.Now().Add(t))   //   [ERROR] file type does not support deadline

最后一行出现错误:文件类型不支持截止时间

最佳答案

对于 1.11 之前的 Go,SetReadDeadline 似乎是为 TCP、UDP 和 Unix 域(又名命名的)套接字定义的,而不是文件

参见 https://golang.org/pkg/net

但在 1.11 中它被引入用于文件(抱歉我错过了),参见 https://golang.org/pkg/os/#File.SetReadDeadline

我在您的 CreateFile 调用中没有看到非阻塞标志?我不知道这在 MS Windows 上是如何工作的……也许我错过了它。截止日期需要这个..也许是一个可能的原因?

关于windows - os.File.SetReadDealine : file type does not support deadline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52417209/

相关文章:

php - 将 php 网站从 Linux 移至 Windows

windows - 单个 OpenGL 上下文,多个 View

c++ - windows下如何设置Qt程序的图标?

go - Go不支持运算符重载,但是我该如何解释时间包

Godeps开发流程?

go - Go testing.B 基准测试是否可以防止不必要的优化?

go - 手动触发和停止时间。Golang 中的 Ticker channel

windows - 为什么从命令行启动时 Excel 在退出时抛出异常?

c++ - 居民纹理?

go - 使用反射动态将结构字段设置为 slice 值