Welcome to MSDN Blogs Sign in | Join | Help

Windows Embedded Blog

A look at Embedded and other Cool Stuff.

News

  • This posting is provided "AS IS" with no warranties, and confers no rights.
CE 5.0 application Compatibility on CE 6.0

Windows Embedded CE 6.0 introduces a new kernel architecture to support kernel mode drivers (user mode drivers are still supported through a user mode driver manager called udevice.exe, interestingly, with CE 6.0 you can have multiple instances of udevice.exe, each hosting a single user mode driver - Juggs talks about the new driver architecture in his MSDN Channel9 interview).

So what does the new architecture do for application compatibility for existing CE 5.0 based applications ? - the majority of "Well Behaved" applications should just run in their unmodified binary form - there are two types of application supported on Windows CE, native, and managed - native applications are assembled, compiled, and linked into a binary application that runs on the processor it's been targeted at (ARM, MIPS, SH4, x86), a managed application is built against the .NET Compact Framework and is written either in C# or VB.

Managed applications are already abstracted from the underlying operating system by the Compact Framework and therefore should just run (unless the application is using platform invoke to call any of the deprecated (no longer supported) APIs) - native applications may not work if they are using any memory/API "tricks", there are a number of deprecated APIs, these include SetKMode, SetProcPermissions etc... - so how do you determine whether an application will run on CE 6.0 or not ?

The good news is that we're introducing a new command line tool called CeAppCompat which can be used to examine a single application/DLL binary or a complete folder full of applications/DLLs and produces an HTML report listing which binaries might have a problem.

CeAppCompat takes two command line parameters - the command line looks like: CeAppCompat -i \FolderPath -o Foo

Where Foo will be the name of the HTML report Foo.html

The CeAppCompat tool simply examines the import tables for each of the binaries and maps these back to the APIs exposed on the operating system (you can examine the import tables on a binary using the command line tool DumpBin - like so, Dumpbin /Imports MyApp.exe) or you can use the UI based application Depends.exe to do the same thing.

- Mike

Posted: Thursday, October 12, 2006 8:43 PM by mikehall

Comments

Mike Hudgell said:

So will AppCompat not pick up dynamically loaded APIs?

Granted, if your dynamically loading them you should check for errors anyway...

# October 13, 2006 4:43 AM

mikehall said:

CeAppCompat uses Dumpbin to get the import table from the binary, the import table lists the statically linked DLLs/Functions.

If you are dynamically linking then you should check the external DLLs to make sure they also are compatibile with CE 6.0.

- Mike

# October 13, 2006 12:22 PM

Tom said:

If the CF 2.0 app is using OpenNetCF framework will it check all of the pInvoke calls being made by the app?  THX

# October 13, 2006 1:46 PM

mikehall said:

CEAppCompat is designed to examine the import table of native applications/dlls - managed applications should be checked at the source level.

- Mike

# October 13, 2006 2:13 PM

Laphroaig said:

When can we download an CE 6.0 based emulator image?

Will it give a StandardSDK_600?

Are WCE200 (HPC 2.0) binary files still supported?

Wouldn't it be better to implement deprecated functions as dummy instead of remove them?

Are CEDB api functions still functional?

# October 13, 2006 2:37 PM

Dave Baker's WebLog said:

Mike Hall covered this in a recent Blog post here . Given that Windows Embedded CE 6.0 introduces a third-generation

# October 20, 2006 9:52 AM
New Comments to this post are disabled
Page view tracker