Saturday 30 January 2010

PSL Example for beginners

There are many articles about PSLs (Protected Server Libraries) and all you CE developers use the PSL mechanisms without racking your brain. Usually there's no need to care about. But some years ago when I started CEing (CE 3.0!) I faced this mechanism the first time while debugging into Win32 API.
Later, in a settop box project, we had to speed up very frequent API calls into a driver. I remembered the PSLs and with that we could speed up the application as required.

There are really good articles about PSLs and what's behind

(WinCE - Using Protected Server Libraries (PSL)) but there is no really basic example that you simply run to see how it works.

You're interested? Load the psl example directory from (Skydrive, unpack it into your BSP (or emulator) src directory and build. After that run it and check the debug output - or single-step the calls.


At the end of this blog you find the debug output you should see when running psl_client.exe on a CE6.0 emulator.

Oh, I forgot to mention a fancy set of functions that allow loading the PSL driver by application (no need to add the driver to the BuiltIn registry path).

And Here two helpful links providing some other PSL related information:
Changes in CE 6.0 (e.g. Error Handling in case of an exception)

Cheers,
Jürgen

Trade offs with PSLs moved into kernel with CE 6.0



20148 PID:3ea000a TID:3eb000a Created device subkey .\MPS0, dll psl_driver = 1
20148 PID:400002 TID:3eb000a DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\Dynamic\MPS0\BusPrefix) returned 2
20211 PID:400002 TID:3eb000a RELFSD: Opening file psl_driver.dll from desktop
20259 PID:400002 TID:3eb000a OSAXST1: >>> Loading Module 'psl_driver.dll' (0x95E2A51C) at address 0xD0DF0000-0xD0DF6000 in Process 'NK.EXE' (0x8335FAA0) PB Debugger Loaded symbols for 'C:\WINCE600\OSDESIGNS\ARMEMU\ARMEMU\RELDIR\DEVICEEMULATOR_ARMV4I_DEBUG\PSL_DRIVER.DLL'
20622 PID:400002 TID:3eb000a PslTest driver : DLL Process Attach.
20627 PID:400002 TID:3eb000a PslTest driver : +MPS_Init
20629 PID:400002 TID:3eb000a ++PslTestRegister()
20629 PID:400002 TID:3eb000a PslTest driver : -MPS_Init
20629 PID:3ea000a TID:3eb000a Activated device MPS0 = d0d4c470
20629 PID:3ea000a TID:3eb000a Client: PslTestOpen()
20629 PID:3ea000a TID:3eb000a PSL successfully opened
20629 PID:400002 TID:3eb000a PslTestFoo('Client calling PSL') called
20629 PID:3ea000a TID:3eb000a PslTestFoo("Client calling PSL") returned 18
20629 PID:400002 TID:3eb000a PslTestBar('abcdefghijklmnopqrstuvwxyz{|}~?????????????????????????? ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃ', 200) called
20629 PID:3ea000a TID:3eb000a PslTestBar("abcdefghijklmnopqrstuvwxyz{|}~?????????????????????????? ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃ") returned 42
20629 PID:3ea000a TID:3eb000a Client: PslTestClose()
20629 PID:400002 TID:3eb000a PslTest driver : +MPS_Deinit
20629 PID:400002 TID:3eb000a !!!Kernel mode PSL 'PTST' de-registered!!!
20629 PID:400002 TID:3eb000a PslTest driver : -MPS_Deinit
20629 PID:400002 TID:3eb000a OSAXST1: <<< Unloading Module 'psl_driver.dll' (0x95E2A51C) at address 0xD0DF0000-0xD0DF6000 in Process 'NK.EXE' (0x8335FAA0)
PB Debugger Unloaded symbols for 'C:\WINCE600\OSDESIGNS\ARMEMU\ARMEMU\RELDIR\DEVICEEMULATOR_ARMV4I_DEBUG\PSL_DRIVER.DLL'
20631 PID:400002 TID:3eb000a PslTest driver : DLL Process Detach.
20632 PID:1b50002 TID:11f0002 [NOTIFY] HandleSystemEvent 7 /ADD MPS0:
22120 PID:1b50002 TID:11f0002 [NOTIFY] HandleSystemEvent 7 /REMOVE MPS0:
22255 PID:3ea000a TID:3eb000a Deactivated device d0d4c470 = 1
22255 PID:3ea000a TID:3eb000a Deleted device subkey .\MPS0 = 0
22255 PID:3ea000a TID:3eb000a OSAXST1: <<< Unloading Module 'coredll.dll' (0x97FF96CC) at address 0x40010000-0x40121000 in Process 'psl_client.exe' (0x95D2FAF8)
22268 PID:3ea000a TID:3eb000a OSAXST1: <<< Unloading Module 'psl_client.exe' (0x95D2FAF8) at address 0x00010000-0x00015000 in Process 'psl_client.exe' (0x95D2FAF8)




Read more! Post this to a friend!

Friday 29 January 2010

.NET Micro Framework News

Hello guys,

as you can read at the .NET MF Team Blog, a new .NET Microframework community development site has been launched today!!!

It’s very cool, but check this site and make your own opinion!

And now “.NET Microframework community” it’s up to you, to take this good chance to use this new site for new interactions with other developers, get the latest resources ….

Join it!!!!


Read more! Post this to a friend!

Wednesday 20 January 2010

Chat with Microsoft technology experts

Hello guys,

2010 has been started and there are new Windows CE Live Chat dates!!!

Do you have tough technical questions regarding Windows Embedded CE for which you're seeking answers? Then don’t hesitate to join the Microsoft’s Windows Embedded CE Live Chat!

So don't forget to put the date in your schedule and join it.

Title: Windows Embedded CE Live Chat!
Date: Tuesday, January 26, 2010 18:00 - 19:00 CET

To join this chat, please log on via the main MSDN chat page at:
http://www.microsoft.com/communities/chats/default.mspx

Have fun!


Read more! Post this to a friend!

New interesting MSDN technical articles available

Hello guys,

there are few new MSDN articles about Windows Mobile 6.5. Take a short look into the intro of them and check them out!

  • “Developing Web Applications for Internet Explorer Mobile 6 on Windows Mobile 6.5”

Internet Explorer Mobile 6 provides many features that Web developers can use to provide a rich user experience on a mobile device. However the form factor of mobile devices and the way that devices access the network mean that developers should make special considerations for Windows phone Web applications. Internet Explorer Mobile 6 provides all the facilities for developers to customize code for mobile devices.

for more information follow this link.

  • “Developing Widgets for Windows Mobile 6.5”

Windows Mobile devices offer a rich user experience and a wealth of features for device users on the move. Windows Mobile widgets are applications written using Web development techniques; they connect to Web services to obtain and display data. Widgets can deliver business data, weather information, news updates, traffic maps, and even slide shows of online photo albums. The flexibility of JavaScript and Web development techniques of dynamic markup and style sheets, coupled with the new widget objects mean that Web developers can produce rich applications with the appearance of native Windows Mobile applications.

for more information follow this link.

  • “Case Study: A Facebook Application for Windows Mobile 6”

This case study looks at a Windows Mobile 6 software client for Facebook, developed by Matchbox Mobile. We explore the problem to solve, the challenges to overcome, and the Windows phone features to maximize. We describe useful strategies for Windows Mobile development based upon our experiences developing the Facebook client. If you are a developer or product manager, this document should offer useful insights into creating a high-quality client application for Windows phones.

for more information follow this link.

Have fun!


Read more! Post this to a friend!

Monday 18 January 2010

Windows CE QFEs for December 2009 have arrived!

Hi all,

The December updates for Windows CE are available for download:

Windows Embedded CE 6.0 Monthly Update (December 2009):

Fixes made in this update:

By Component:

Component: Adobe Flash
· 091229_KB977827 - Adobe Flash Lite LoadPolicyFile from loca lhost may not work correctly.
Component: ATL8
· 091211_KB974616 - This update addresses some issues in Active Template Library.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\: others\atl8\include\atlcom.h others\atl8\include\atlcomcli.h
Component: DirectX
· 091221_KB959480 - This update addresses an issue with choppy audio and video when streaming 4 mbps or higher content over MMS or HTTP.
Component: HTTP
· 091231_KB978456 - AUTH_USER Web Server variable not set for NTLM authentication.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\: private\servers\http\auth\auth.cpp
Component: Internet Explorer
· 091215_KB977984 - Users are not allowed to choose download destination if the current drive is full.
· 091218_KB978007 - Customization of UAString may result in web sites not recognizing the browser and reporting an error "The browser is out of date".
Certain Web sites check the browser’s User-Agent string to identify the browser navigating to their site. The default User-Agent string sent to all sites is “MSIE 6.0”.
You can change the string that is sent to a specific site by changing the UAString in the registry. The UAString replaces the User-Agent header when users navigate to that site.

To changes the registry setting:
1. Navigate to the registry key HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\UAMap2. Identify the site that receives the new User-Agent string in the HostNameSuffix field. For example, http://www.contoso.com/ is listed as contoso.com.3. Replace the UAString field with a custom User-Agent string. For example, you can change the UAString for contoso.com to “Mozilla/4.0 (compatible; Internet Explorer Embedded; Windows NT 5.1)”.
The default string “MSIE 6.0” is replaced by “Internet Explorer Embedded.”

NOTE: Some sites my not recognize the custom User-Agent string. The UAString must be tested for each site.
Component: RDP
· 091229_KB945975 - Updated files for this release. This update adds multi-user support for ThinClient, allows customization of the UI tabs from option dialog except the general tab
Component: SNMP
· 091214_KB977410 - SNMP trap may use wrong IP address for trap message on multi-homed device.
Component: TimeSVC
· 091216_KB977476 - This update addresses some time zone issues and adds new DST changes.


Windows CE 5.0 Platform Builder Monthly Update (December 2009):

Fixes made in this update:

By Component:

Component: TimeSVC
· 091231_KB977613 - This update addresses some time zone issues and adds new DST changes.

Remember: it’s important to keep your system up to date!

Have fun!
Read more! Post this to a friend!

Saturday 2 January 2010

Congratulations - eMVPs

Every year MVP nominees - active as well as new candidates - are reviewed by Microsoft and consequently "the best of the best of the best" (Reminds me of Will Smith in MiB ;-) receive the Microsoft MVP Award. The awards are given from the different product groups and respectively also for Windows Embedded - the so called eMVPs.

I would like to congratulate all eMVPs who have received the award this 1st January - but especially I would like to congratulate Jochen from our Blog team!

Congratulations, Jochen!

Keep up the good work!

So long and thanks for all the fish!
PS: Guess I couldn't keep my mouth shut ;-)
Read more! Post this to a friend!