Windows SDK内部是什么?

为了开发windows程序,我们需要windows SDK。 我明白,这个SDK是什么帮助创build窗口和处理窗口事件等等。 我想这也使我们能够操纵文件和registry。 (相同的SDK是线程创build和处理的原因吗?)

一切都好!

我想知道什么是作为这个SDK的一部分的文件和库。 还有,当我安装操作系统或当我安装编辑器像Visual Studio? 有时我会分开看到与windows SDK的链接。 这与我在安装Visual Studio时所得到的一样,还是不止如此。

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

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

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

SDK是作为Visual Studio安装的一部分安装的,通常您将使用随编译器一起提供的SDK,而不必担心。 独立的SDK下载可以支持两种情况:

  • 如果您使用Visual Studio以外的其他编译器,则可能不包含SDK文件,因此您可以单独下载它们。

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

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版本,基本控件驻留在comctl32.dll,以及常见的控件(公共控制库)。

 Common Dialog Box Library: 

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

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

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

 Common Control Library: 

使应用程序可以访问操作系统提供的一些高级控件。 这些包括像

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

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

 Windows Shell: 

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

  • 由操作系统shell提供的功能,
  • 以及改变和加强它。

该组件驻留在32位Windows上的shell32.dll中。 Shell Lightweight Utility函数在shlwapi.dll中。 它被分组在API的用户界面类别下。

 Network Services: 

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

  • NetBIOS的,
  • Winsock的,
  • netdde的,
  • RPC等等。

    Internet Explorer Web浏览器API:

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

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

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

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