Skip to content
/

Today the Microsoft Virtualization Team announced the availability of the new beta version of the Linux Integration Services for Hyper-V.
In this post I will try the new features.

Today the Microsoft Virtualization Team . There are three big changes in this version:

  • Virtual machines will be able to use up to 4 virtual CPU’s.
  • Virtual machines will be able to synchronize their time with the parent partition.
  • Virtual machines will be able to shutdown gracefully from the Hyper-V manager.

In this post I will try the new features.

Linux Integration Services for Hyper-V 2.0

First I got a VM (Virtual Machine) installed as described in my previous post . I used the current released stable version of the LIS (Linux Integration Services): Version 2.0.

Screenshot displaying the VMBUS information on booting the virtual machine. Build Date=Jun 29 2009 and Build Description=Version 2.0.
On boot time VMBUS displays Version 2.0

My Hyper-V host only has a dual-core CPU. So it’s impossible for me to test the 4 CPU support. I couldn’t find any differences with 2 CPU’s.

Shutdown from Hyper-V Console

With the current version of the LIS when I press the shutdown button I get the following error:

Screenshot displaying the Hyper-V console showing the error text: "The application encountered an error while attempting to change the state of 'BlogDemo'. Failed to shut down the virtual machine.".
Hyper-V Console shows the error Failed to shut down the virtual machine.

Time synchronization

With the current version of the LIS I had a lot of trouble with the clock of the VM getting out of sync very fast. I did a post to fix this: .

I didn’t implement the fix on the VM I created for this post to demonstrate the problem:

Screenshot displaying the Hyper-V console showing the VM gets a time difference of multiple=
The VM gets an offset of multiple seconds within minutes.

Linux Integration Services for Hyper-V 2.1 Beta

To get the beta drivers you need to download them from the Microsoft Connect website. (Look for the Linux Integration Services for Hyper-V project site).

I installed the new drivers in exact the same way as the 2.0.

Screenshot displaying the VMBUS information on booting the virtual machine. Build Date=Mar 23 2010 and Build Description=Version 2.1.2.
On boot time VMBUS displays Version 2.1.2

Not only the new version number is displayed, also the new Shutdown and Timesync channels are mentioned!

Shutdown from Hyper-V Console

Pressing the shutdown button now gives a more expected result:

Screenshot displaying the virtual machine has received the shutdown command and starts the poweroff sequence.
The VM receives the signal to shutdown and calls /sbin/poweroff
Screenshot displaying the Hyper-V console with the message: "The virtual machine is truned off".
The VM is gracefully turned off.

Time synchronization

With the new LIS the time is pretty much stable, nothing the NTP service can handle. There is no need to change the boot command in grub anymore.

Screenshot displaying the Hyper-V console showing the VM shows minimal time difference over the course of minutes.
The VM only shows a minimal time difference over the course of minutes.
Filed under Hyper-V
Last update:
/

I wanted to use the new REST services in SharePoint 2010.
But when I navigated to the ListData.svc service. I got the following error: “Could not load type 'System.Data.Services.Providers.IDataServiceUpdateProvider' from assembly 'System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.”

I wanted to use the new REST services in SharePoint 2010. But when I navigated to the ListData.svc service. I got the following error:

Screenshot displaying SharePoint 2010 showing the following error: "Could not load type 'System.Data.Services.Providers.IDataServiceUpdateProvider' from assembly 'System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'."

First I checked if there was a System.Data.Services entry in the GAC (Global Assembly Cache). There was one with version 3.5.30729.1. So it wasn’t a case of a missing file.

Searching the web on the error Could not load type 'System.­Data.­Services.­Providers.­IDataServiceUpdateProvider' from assembly 'System.­Data.­Services, Version=3.5.0.0, Culture=­neutral, PublicKeyToken=­b77a5c561934e089' does not provide many hints to what is causing this error.
Most sites suggest to install ADO.NET Data Services v1.5 CTP2, but I already had.

I finally found the page by . He suggests to install the ADO.NET Data Services Update for .NET 3.5 SP1. As it turns out, this is the final release of the ADO.NET Services v1.5!

The update comes in two flavors.

For Windows 7 AND Windows Server 2008 R2

Download the ADO.NET Data Services Update for .NET Framework 3.5 SP1 for Windows 7 and Windows Server 2008 R2.

After installing the version of the System.Data.Services.dll file is 3.5.30729.5004.

For Windows 2000, Windows XP, Windows Vista, Windows Server 2003 AND Windows Server 2008

Download the ADO.NET Data Services Update for .NET Framework 3.5 SP1 for Windows 2000, Windows Server 2003, Windows XP, Windows Vista and Windows Server 2008.

After installing the version of the System.Data.Services.dll file is 3.5.30729.4466.

Testing

After I installed the update I browsed to the ListData.svc service.

Screenshot displaying the service description of a SharePoint 2010 Team Site as an atom feed.
The service description of a SharePoint 2010 Team Site as an atom feed.
/

Today the news broke Microsoft has extended the support for installations of Windows SharePoint Services 3.0 SP1, Microsoft Office SharePoint Server 2007 SP1 and Project Server 2007 SP1.

As I wrote in . But today I discovered Microsoft has extended the support for installations of Windows SharePoint Services 3.0 SP1, Microsoft Office SharePoint Server 2007 SP1 and Project Server 2007 SP1.

On the pages for Windows SharePoint Services 3.0 Service Pack 1 and 2007 Microsoft Office Servers Service Pack 1 the new retirement date is set for .

/

The Microsoft Surface is a Windows Vista computer running the Microsoft Surface Shell. This shell is by default localized for US English. It's possible to localize for other locales, but there is no configuration screen to set the desired localization.
This post will summarize the different steps to localize the Surface shell.

The Microsoft Surface (the table, not the tablet) is a Windows Vista computer running the Microsoft Surface Shell. This shell is by default localized for US English.
It’s possible to localize for other locales, but there is no configuration screen to set the desired localization.
This post will summarize the different steps to localize the Surface shell.

Microsoft Surface Device vs. Microsoft Surface Simulator

The settings work for both the Microsoft Surface device and the Surface Simulator.

Note for x64 machines (Running the SDK)

If you’re running the Surface Simulator on a x64 machine (see my post about ) the registry entries are slightly different.

For x86:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0

For x64:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Surface\v1.0

All my examples in this post will use the x86 path.

Setting the Surface Shell interface language

With service pack 1 the Shell now supports 10 UI languages.

Language UILanguageName value
Danish da-DK
Dutch nl-NL
English (United States) en-US
French fr-FR
German de-DE
Italian it-IT
Korean ko-KR
Norwegian (Bokmål) nb-NO
Spanish es-ES
Swedish sv-SE

 

To set the required language you need to edit the registry.

  1. Look for the following key
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0\InternationalSupport
  2. Change the UILanguageName value into the desired language name you find in the table. For example to set the language to Dutch you enter nl-NL.
  3. Restart the shell
Screenshot displaying the modified registry entry to localize the language of the Shell.
The modified registry entry to localize the Surface Shell language.
Surface button displaying "Close everything" (English) as caption.
Close button with caption Close everything in English (default).
Surface button displaying "Alles sluiten" (Dutch) as caption.
Close button with caption Alles sluiten in Dutch (localized).

Setting the Surface Keyboard mapping

There are 19 supported keyboard mappings.

Keyboard layout InputLanguageID value
Belgian (Comma) 0x1080c
Belgian French 0x80c
Canadian French 0x1009
Canadian Multilingual Standard 0x11009
Danish 0x406
French 0x40c
German 0x407
Italian 0x410
Korean 0x412
Latin American 0x80a
Norwegian 0x414
Spanish 0x40a
Swedish 0x41d
Swiss French 0x100c
Swiss German 0x807
United Kingdom 0x809
United Kingdom Extended 0x452
US English 0x409
US-International 0x20409

 

To set the desired keyboard mapping you need to edit the registry.

  1. Look for the following key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0\InternationalSupport
  2. Change the InputLanguageID value into the desired keyboard mapping you find in the table. For example to set the shell to Korean you enter 0x412 (Hexadecimal).
  3. Restart the shell
Screenshot displaying the modified registry entry to localize the mapping of the Surface Keyboard.
The modified registry entry to localize the Surface Keyboard mapping.
Keyboard using US English mapping.
Surface Keyboard with US English mapping (default).
Keyboard using Korean mapping.
Surface Keyboard with Korean mapping (localized).

Setting the Surface Date and Number formatting

For date and number formatting you can use all locales supported by the .NET Framework. The complete list can be found on the MSDN page.

Just combine the primary language, for example: Dutch (nl), with the sublanguage, for example Netherlands (NL): nl-NL.

To set the desired date and number formatting you need to edit the registry.

  1. Look for the following key
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0\InternationalSupport
  2. Change the LocaleName value into the desired formatting locale. For example to set the formatting to Dutch you enter nl-NL.
  3. Restart the shell
Screenshot displaying the modified registry entry to localize the formatting of date and time values.
The modified registry entry to localize the date and number formatting.
Date and time formatted in US English: "Monday, March 22, 2010 12:00:00 AM".
Date formatting in US English (default).
Date and time formatted in Dutch: "maandag 22 maart 2010 0:00:00".
Date formatting in Dutch (localized).
Filed under Surface
Last update:
/

If you want to develop for the Microsoft Surface you need a Surface device, but using the device to develop is not always practical, specially when there are more developers than Surface devices. The solution for this is to install the Surface SDK on you local development machine. This post will address some limitations you have to work around.

If you want to develop for the Microsoft Surface (the table, not the tablet) you need a Surface device. But using the device to develop is not always practical, specially when there are more developers than Surface devices. The solution for this is to install the Surface SDK Workstation Edition on your local development machine. This post will address some limitations you have to work around.

The Microsoft Surface SDK

The Microsoft Surface SDK was released to attendees of the PDC in 2008, where I was one of the lucky few. You can still view the Developing for Microsoft Surface session on Channel 9.

With the PDC 2009 the Microsoft Surface SDK 1.0 SP1 Workstation Edition was publically released.

Prerequisites

Before you can install the Surface SDK there are some prerequisites:

When you're running Vista x86

Assuming you're not running Windows Vista Starter Edition you can install the Surface SDK without problems and can start developing immediatly!

When you're not running Vista or x86

Error dialog diplaying the message: "Your system does not have the correct version of Windows Vista. You must install Microsoft Surface SDK 1.0 SP1, Workstation Edition on a 32-bit version of Windows Vista with Service Pack 1 (SP1). Microsoft Surface SDK 1.0 SP1, Workstation Edition also does not support Windows Vista Starter edition."

Well let's face it, Windows Vista is old and gone, and everybody is running Windows 7 nowadays. So does this mean no more Surface development?

Lucky enough wrote a great blog post about this and I will summarize it here.

Naturally this makes the installation not supported by Microsoft.

Extracting the installer

There are two installers on the web available at the moment. An executable if you download the SDK from the partner site and a MSI if you download the SDK from the public Microsoft download site.

For the MSI:

msiexec /a SurfaceSDKWE.msi /qb TARGETDIR=c:\surface

For the executable:

"Microsoft Surface SDK 1.0 SP1, Workstation Edition.exe" /extract c:\surface

Patching the installer

Get the Orca tool from the Windows SDK, or if you don't want to download 4GB for a tool not bigger than 2MB, try a less supported site. 😉

  1. Open the extracted SurfaceSDKWE.msi file with Orca.
  2. Select the table LaunchCondition
  3. Select the row with Installed OR NOT VersionNT64 and choose Drop row
  4. Save & Close Orca

Patching the Custom Actions

This is only needed on a x64 machine.

Get the CorFlags tool from the Windows SDK, or if you still don't want to download 4GB, try an even lesser supported site. 🙂

  1. Open a command prompt with elevated privileges (Run as administrator).
  2. Go to the location of the extracted installer
    cd "Microsoft Surface\v1.0"
    CorFlags setupcustomaction.exe /32BIT+ /Force /nologo

    Ignore the warning with the code CF011 about strong named signing.
    Command prompt showing the warning "corflags : warning CF011 : The specified file is strong name signed. Using /Force will invalidate the signature of this image and will require the assembly to be resigned." after execution.

Installing the SDK

This is pretty straightforward.

First screen of the Microsoft Surface SDK 1.0 SP1, Workstation Edition Setup

If you are running on a x86 system you can start developing!

Patching the executables

This is only needed on a x64 machine.

To make sure the Surface SDK executables are using the x86 CLR you have to patch them all.

cd "C:\Program Files (x86)\Microsoft SDKs\Surface\v1.0\Tools\GenTag"
for %i in (*.exe) do CorFlags %i /32BIT+ /Force /nologo /UpgradeCLRHeader

cd "C:\Program Files (x86)\Microsoft SDKs\Surface\v1.0\Tools\Simulator"
for %i in (*.exe) do CorFlags %i /32BIT+ /Force /nologo /UpgradeCLRHeader

cd "C:\Program Files (x86)\Microsoft SDKs\Surface\v1.0\Tools\SurfaceStress"
for %i in (*.exe) do CorFlags %i /32BIT+ /Force /nologo

cd "C:\Program Files (x86)\Microsoft Surface\v1.0"
for %i in (*.exe) do CorFlags %i /32BIT+ /Force /nologo

Patching the Sample Applications

This is only needed on a x64 machine.

Modify all projects files (*.csproj) and change the build type from Any CPU to x86.

For example, add the following to the appropriate PropertyGroup tags:

<PlatformTarget>x86</PlatformTarget>
Filed under Surface
Last update: