【问题标题】:What is inside Windows SDK?Windows SDK 里面有什么?
【发布时间】:2010-05-20 11:20:08
【问题描述】:

为开发windows程序,我们需要windows SDK。我知道这个 SDK 有助于创建窗口和处理窗口事件等等。我想它还使我们能够操作文件和注册表。 (是否同一个SDK是线程创建和处理的原因?)

一切都好!

我想知道这个 SDK 中包含哪些文件和库。当我安装操作系统或安装像 Visual Studio 这样的编辑器时,它也会出现吗?有时我会单独看到指向 Windows SDK 的链接。是和我安装 Visual Studio 时得到的一样还是有更多的东西。

【问题讨论】:

    标签: windows sdk winapi


    【解决方案1】:
    Base Services: 
    

    提供对 Windows 系统可用的基本资源的访问。 包括诸如

    之类的东西
    • 文件系统,
    • 设备,
    • 进程和线程
    • 和错误处理。

    这些函数驻留在 32 位 Windows 上的 kernel32.dll 中。

    Advanced Services:
    

    提供对内核附加功能的访问。 包括像

    这样的东西
    • Windows 注册表
    • 关闭/重启系统(或中止)
    • 启动/停止/创建 Windows 服务
    • 管理用户帐户

    这些函数驻留在 32 位 Windows 上的 advapi32.dll 中。

    Graphics Device Interface:
    

    提供将图形内容输出到的功能

    • 显示器,
    • 打印机
    • 和其他输出设备。

    它驻留在用户模式下的 32 位 Windows 上的 gdi32.dll 中。内核模式 GDI 支持由直接与图形驱动程序通信的 win32k.sys 提供。

    User Interface:
    

    提供创建和管理屏幕窗口和最基本的控件的功能,例如

    • 按钮和滚动条,
    • 接收鼠标和键盘输入,
    • 以及与 Windows 的 GUI 部分相关的其他功能。

    此功能单元位于 32 位 Windows 上的 user32.dll 中。从 Windows XP 版本开始,基本控件与通用控件(Common Control Library)一起驻留在 comctl32.dll 中。

    Common Dialog Box Library:
    

    为应用程序提供标准对话框

    • 打开和保存文件,
    • 选择颜色和字体等

    该库位于 32 位 Windows 上的 comdlg32.dll 中。它被分组在 API 的用户界面类别下。

    Common Control Library:
    

    允许应用程序访问操作系统提供的一些高级控件。其中包括

    • 状态栏,
    • 进度条,
    • 工具栏
    • 和标签。

    该库位于 32 位 Windows 上的 comctl32.dll 中。它被分组在 API 的用户界面类别下。

    Windows Shell:
    

    Windows API 组件允许应用程序访问

    • 操作系统外壳提供的功能,
    • 以及更改和增强它。

    该组件位于 32 位 Windows 上的 shell32.dll 中。 Shell 轻量级实用程序函数位于 shlwapi.dll 中。它被分组在 API 的用户界面类别下。

    Network Services:
    

    允许访问操作系统的各种网络功能。 其子组件包括

    • NetBIOS,
    • 温索克,
    • NetDDE,
    • RPC 和许多其他。

      Internet Explorer 网络浏览器 API:

    • 一个可嵌入的 Web 浏览器控件,包含在 shdocvw.dll 和 mshtml.dll 中。
    • URL 监控服务,保存在 urlmon.dll 中,为应用程序提供 COM 对象以解析 URL。
    • 一个用于协助多语言和国际文本支持的库 (mlang.dll)。 XML 支持(MSXML 组件,保存在 msxml*.dll 中)。

    我只列出了 32 位窗口的文件(因为这是许多窗口开发人员的工作)

    欲了解更多信息,请查看http://en.wikipedia.org/wiki/Windows_API

    编辑: 以上 dll 和所有的都是操作系统的一部分,而不是 SDK。 Windows SDK 提供了允许代码动态链接到这些系统提供的 DLL 的导入库(.lib 文件)。 (Marcelo Cantos 正确地指出了这一点。非常感谢他)

    【讨论】:

      【解决方案2】:

      SDK 代表软件开发工具包。它是开发人员用来构建软件的头文件、库、工具和其他零碎的大集合。 Microsoft 为其大量产品提供了许多 SDK,并且它们通常部署到最终用户的桌面。它们通常只安装在开发人员机器上,或者作为 Visual Studio 等开发环境的一部分,或者单独安装(但通常是为了在 VS 中使用)。

      当您谈论处理窗口、线程等的事物时,您是在描述 Windows API。 SDK 的目的是允许开发人员编写访问 API 的软件。

      【讨论】:

      • 这些 API 通过 Dll(如 kernel32、user32、gdi32)公开,这些 Dll 是 Windows SDK 的一部分。对吗?
      • kernel32 等是操作系统的一部分,而不是 SDK。 Windows SDK 提供了允许代码动态链接到这些系统提供的 DLL 的导入库(.lib 文件)。
      • 哦。感谢您澄清这一点。 :)
      【解决方案3】:

      Windows SDK 让您作为开发人员可以访问 Windows 平台的所有服务,包括您列出的所有内容。

      SDK 是作为 Visual Studio 安装的一部分安装的,通常您会使用编译器附带的那个,而不必担心它。独立的 SDK 下载支持两种场景:

      • 如果您使用 Visual Studio 以外的编译器,可能没有附带 SDK 文件,因此您可以单独下载。

      • 每个新版本的 Windows 在 API 中都包含更多功能,因此要调用这些新功能,您需要更新的 SDK。

      【讨论】:

      • 你指定的那些SDK文件是我关心的?为了不麻烦您要求将其列出,我已将其列为我对这个问题的回答的一部分,我得到了 thro wiki。 :)
      猜你喜欢
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 2023-03-14
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多