A significant part of Longhorn is written in managed .NET code. Taskbar, sidebar, preview paneā¦ it’s all .NET. I thought it would be interesting to know the mechanics behind this framework, so here we go: an article solely about .NET.
Of course, first we need to write our program in a .NET language. When the time has come to test the application, you’ll first need to compile it to an assembly we can execute.
After the painful experience of repeatedly changing names during the Windows XP and Windows Server 2003 development cycles, Microsoft decided to introduce a common, global branding API into Longhorn. The foundations of this system are present right from build 3683.
A new API was introduced in the kernel, called RtlGetOSProductName, which was then exposed to user space through GetOSProductName in kernel32.dll.
Dialogs like sysdm.cpl use this API to obtain branding information like the SKU and version.
A couple of years ago, I put together a sample tile written in .NET 1.1 / Visual Studio 2003 for Longhorn build 3683. This sample tile simply reads the current OS Version from Environment.OSVersion.
There are two methods that your class must implement if you inherit from the BaseTile abstract class.
The first is HasView:
public abstract bool HasView(ModuleViewTypes view); This is used by the Sidebar to determine which “views” your tile supports.
This is the first post in a series that I’ll be doing. Hacking Avalon will be all about interesting stuff in Avalon. Furthermore, I hope to provide some background on how early variants of Avalon work together with the shell in Longhorn. Keep in mind, this series will mainly discuss the earliest revisions of Avalon found in Milestone 3 builds. The tricks may not always work on later builds. That’s it for the intro.
Always wanted to experiment with Avalon on Windows XP? In this second part of the “Hacking Avalon” series, we’re going to install not only Avalon but also some other Longhorn components. In this post, I will take Windows XP as example, but the installer is also compatible with Server 2003. Below is a description of the included components and their use.
avalon This will install the Longhorn Avalon runtime to your computer.
In this third part of the Hacking Avalon series, we are taking a closer look at the process of making an Avalon application. To do this, we will be using a special tool only available in early Longhorn builds. This tool is called the Avalon Compiler or simply ac. This tool does what its name suggests; compile Avalon. What is that precisely?
Just a quick note before we begin; this post is completely based on the Avalon version included with 3683.
Reading up on Longhorn’s development process, and you’ll read a lot about how the shell or user interface was redeveloped using the .NET Framework, and many people infer that this meant using C#, including a number of Microsoft employees. This has then been blamed for the poor performance of Longhorn and in particular, is often cited as the cause for its numerous memory leaks.
Architecture Let’s take a step back for a moment and consider the shell improvements from a wider view.