microsoft/go-winio
GitHub: microsoft/go-winio
微软出品的 Go 语言库,提供基于 IO 完成端口的高效 Win32 IO 工具,重点支持命名管道访问及其作为网络传输的使用。
Stars: 1070 | Forks: 214
# go-winio [](https://github.com/microsoft/go-winio/actions/workflows/ci.yml)
本仓库包含用于在 Go 中高效执行 Win32 IO 操作的实用工具。
目前,这主要侧重于访问命名管道和其他文件句柄,
以及将命名管道用作 net transport。
此代码依赖于 IO 完成端口来避免系统线程上的阻塞 IO,从而允许 Go
重用该线程来调度另一个 goroutine。这将支持限制在 Windows Vista 及
更新的操作系统上。这类似于 Go 的 net 包中网络 socket 的实现。
有关许可信息,请参阅 LICENSE 文件。
### 代码签名确认
我们要求贡献者使用 [`git commit --signoff`][git-commit-s] 对他们的提交进行签名,
以证明他们要么自己撰写了该作品,要么拥有在本项目中使用它的权限。
一系列的提交可以使用 [`git rebase --signoff`][git-rebase-s] 进行签名。
请参阅[开发者证书](https://developercertificate.org)了解更多信息,
并确保您能够保证遵守所列出的规则。
我们的 CI 使用 DCO Github 应用程序来确保给定 PR 中的所有提交都已签名。
### 代码检查
代码必须通过代码检查阶段,该阶段使用 [`golangci-lint`][lint]。
代码检查设置存储在 [`.golangci.yaml`](./.golangci.yaml) 中,通过将以下内容添加到您的工作区或文件夹设置中,
可以在 VSCode 中自动运行:
```
"go.lintTool": "golangci-lint",
"go.lintOnSave": "package",
```
还提供其他编辑器[集成选项][lint-ide]。
或者,可以[在本地安装][lint-install] `golangci-lint` 并从仓库根目录运行:
```
# 使用 . 或指定一个路径以仅 lint 一个 package
# 要显示所有 lint 错误,请使用 flags "--max-issues-per-linter=0 --max-same-issues=0"
> golangci-lint run ./...
```
### Go Generate
流水线会检查通过 `go generate` 生成的自动代码是否为最新状态。
可以对整个仓库执行此操作:
```
> go generate ./...
```
## 特别感谢
感谢 [natefinch][natefinch] 对本库的启发。
有关另一种命名管道实现,请参阅 [npipe](https://github.com/natefinch/npipe)。
标签:EVTX分析, Go, I/O操作, Linux, Ruby工具, 命名管道, 底层库, 日志审计, 系统编程