microsoft/go-winio

GitHub: microsoft/go-winio

微软出品的 Go 语言库,提供基于 IO 完成端口的高效 Win32 IO 工具,重点支持命名管道访问及其作为网络传输的使用。

Stars: 1070 | Forks: 214

# go-winio [![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](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工具, 命名管道, 底层库, 日志审计, 系统编程