views:

104

answers:

3

For developing programs for windows, we need windows SDK. I understand that this SDK is what helps to create windows and handle window events and all that. I suppose it also enables us to manipulate with files and registries. (Does the same SDK is the reason for thread creation and handling?)

All that is fine!

I would like to know what are the files and libraries that come as a part of this SDK. Also does it come when I install the OS or when I install editors like Visual studio? Sometimes I see links to windows SDK separately as such. Is it same as the one that I get when installing Visual Studio or has something more than that.

+1  A: 

SDK stands for Software Development Kit. It is a big fat collection of headers, libraries, tools and other bits and pieces that developers use to construct software. Microsoft provides many SDK's for their large range of products, and they are not generally deployed to the end-user's desktop. They are usually only installed on developer machines, either as part of a development environment like Visual Studio, or separately (but usually intended for use within VS anyway).

When you talk about the thing that handles windows, threads, etc., you are describing the Windows APIs. The purpose of an SDK is to allow developers to write software that accesses the APIs.

Marcelo Cantos
These API's are exposed through Dlls (like kernel32, user32, gdi32) that were part of Windows SDK. Is it right?
AKN
kernel32 et al are part of the operating system, not the SDK. The Windows SDK provides import libraries (.lib files) that allow code to dynamically link against these system-provided DLLs.
Marcelo Cantos
Oh. Thanks for clarifying that. :)
AKN
+1  A: 

The Windows SDK gives you, as a developer, access to all the services of the Windows platform, including all the things you list.

The SDK is installed as part of the installation of Visual Studio, and usually you'll use the one that came with the compiler, and never have to worry about it. The standalone SDK downloads are there to support two scenarios:

  • If you use a compiler other that Visual Studio, it may not come with the SDK files, so you can download them separately.

  • Each new version of Windows includes more features in the API, so to call these new functions you need an updated SDK.

Andy Mortimer
Those SDK files that you have specified is what I was concerned about? In order not to trouble you asking to list it down, I have it listed as part of my answer to this question I got thro wiki. :)
AKN
A: 
Base Services: 

Provide access to the fundamental resources available to a Windows system. Included are things like

  • file systems,
  • devices,
  • processes & threads
  • and error handling.

These functions reside in kernel32.dll on 32-bit Windows.

Advanced Services:

Provide access to functionality that is an addition on the kernel. Included are things like the

  • Windows registry
  • shutdown/restart the system (or abort)
  • start/stop/create a Windows service
  • manage user accounts

These functions reside in advapi32.dll on 32-bit Windows.

Graphics Device Interface:

Provides functionality for outputting graphical content to

  • monitors,
  • printers
  • and other output devices.

It resides in gdi32.dll on 32-bit Windows in user-mode. Kernel-mode GDI support is provided by win32k.sys which communicates directly with the graphics driver.

User Interface:

Provides the functionality to create and manage screen windows and most basic controls, such as

  • buttons and scrollbars,
  • receive mouse and keyboard input,
  • and other functionality associated with the GUI part of Windows.

This functional unit resides in user32.dll on 32-bit Windows. Since Windows XP versions, the basic controls reside in comctl32.dll, together with the common controls (Common Control Library).

Common Dialog Box Library:

Provides applications the standard dialog boxes for

  • opening and saving files,
  • choosing color and font, etc.

The library resides in comdlg32.dll on 32-bit Windows. It is grouped under the User Interface category of the API.

Common Control Library:

Gives applications access to some advanced controls provided by the operating system. These include things like

  • status bars,
  • progress bars,
  • toolbars
  • and tabs.

The library resides in comctl32.dll on 32-bit Windows. It is grouped under the User Interface category of the API.

Windows Shell:

Component of the Windows API allows applications to access the

  • functionality provided by the operating system shell,
  • as well as change and enhance it.

The component resides in shell32.dll on 32-bit Windows. The Shell Lightweight Utility Functions are in shlwapi.dll. It is grouped under the User Interface category of the API.

Network Services:

Give access to the various networking capabilities of the operating system. Its sub-components include

  • NetBIOS,
  • Winsock,
  • NetDDE,
  • RPC and many others.

    Internet Explorer web browser APIs:

  • An embeddable web browser control, contained in shdocvw.dll and mshtml.dll.
  • The URL monitor service, held in urlmon.dll, which provides COM objects to applications for resolving URLs.
  • A library for assisting with multi-language and international text support (mlang.dll). XML support (the MSXML components, held in msxml*.dll).

I have listed only files for 32-bit windows (as that is what many window developers work on)

For more info, please check http://en.wikipedia.org/wiki/Windows_API

EDIT: Above dlls and all are part of the operating system, not the SDK. The Windows SDK provides import libraries (.lib files) that allow code to dynamically link against these system-provided DLLs. (This was rightly pointed by Marcelo Cantos. Many thanks to him)

AKN