#windows-rs #winapi #api-bindings #windows #windows-extensions

windows-ext

为 windows-rs 提供Windows SDK宏和仅头文件函数的扩展

2个版本

0.0.2 2024年3月19日
0.0.1 2024年1月30日
0.0.0 2024年1月30日

#122Windows API

Download history 46/week @ 2024-03-31 1/week @ 2024-04-07 16/week @ 2024-04-21

每月98次下载

MIT/Apache

17KB
110

windows-rswindows-sys 包的扩展

这里的代码目前不打算作为生产质量的包。它存在是为了提供Windows SDK宏和仅头文件函数的基本实现。最初作为要添加到 Kenny Kerr的博客 的片段集合,以正式功能请求的形式提出,最初决定将这些片段添加到博客中。

当明确地认识到博客片段可能不是最佳选择由于没有测试和高度审查负担,选择了将片段移动到可自动测试的包在最后一条评论中。这是那个仓库。话虽如此,这个包已经发展成为可以直接使用功能包装的直接可用包。为此,它需要发展成为提供所需功能的实用辅助工具集合,以尽可能接近现有的头文件组织。毕竟,最终目标是让构建针对Windows SDK的用户更轻松。

我要感谢 @kennykerr 和 @tim-weis 对处理这种情况的耐心和灵活性。我希望他们会继续参与,确保这个包在前进过程中保持准确。我也想鼓励更多的贡献者。如果有人有任何想法,请随时提供它缺乏的正式性和关怀

总体结构

这里的代码都属于一个大的包,但像 windows 包一样,所有组件都是按特性门控的,以防止构建不必要的内容。这将在未来允许尽可能细粒度的测试,并防止因大量未使用特性而产生巨大的二进制文件大小。这应该也有助于将事物组织成逻辑上紧密相关的部分,尽可能接近现有的头文件。采用扩展包的方法还可以定义与特定工作负载相关的扩展特性。毕竟,最终目标是让构建针对Windows SDK的用户更轻松。

在未来,可能会创建其他crate来进一步拆分功能。例如,WinRT用于COM和图形堆栈相关的功能主要与windows crates中暴露的核心操作系统接口分开定义。如果功能列表变得过大或者实用函数数量足够多,它们可能会在某一点上独立出来。

许可

这里没有什么奇怪的地方。像生态系统中的许多其他crate一样,这个crate可以选择使用Apache 2.0MIT协议。

除非明确声明,否则您提交给作品的所有贡献(根据Apache 2.0许可证定义),将按照上述方式双许可,没有任何额外条款或条件。

常见问题解答(FAQ)

  • 问:我真的想在代码中使用这个crate,可以吗?
    答:你可以。真正的问题是你是否应该这么做。

  • 问:好吧,那么我应该吗?
    答:不。至少在目前的版本中,除非你害怕位操作,否则这个crate几乎没有什么有趣的功能。不过,也许在未来,一旦投入更多时间和精力后。

  • 问:我从头文件Y中缺少宏X!
    答:问题通常都有问号。但我理解你的问题和挫折,所以请创建一个issue或自己实现,然后提交PR给我们!

  • 问:我想添加内容,但我在哪里可以找到基于它的C++实现?
    答:在Windows SDK中。在MSDN和网络上查找相关信息。它应该包含任何包含Windows 10/11 SDK工作负载的Visual Studio安装。

  • 问:我缺少一整个函数家族,它们在哪里?(这个issue实际上是针对完整的MI_*套件打开的)
    答:你可以自己添加它们!或者创建一个issue来请求它们,并希望它们能及时被处理。这个项目是志愿者努力的结果,时间是有限的。

  • 问:我提出了一个请求,但它被关闭为“不会修复”,为什么?
    答:一些宏实际上只与C++相关,而这个repo只存在用于实际增加价值。如果你认为这个请求可以为Rust增加价值,请随时在issue线程中继续讨论,或者PR它来展示增加价值的地方。

  • 问:我的问题不在这里,而且这些似乎都不合理。我该怎么办?
    答:频繁和非常年轻的crate不太搭配,所以这只是我想到的几个人们可能会问的问题。话虽如此,issue是询问问题的完美地方,如果有任何突出的问题,它将在这里找到它的位置。

依赖项

~127MB
~2M SLoC