MBL200:
Next Generation Pocket PC and Smartphone Development Platform
Neil Enns
Program Manager
Mobiles Devices Product Group
Microsoft Corporation
Agenda
Overview of Development Platform
Key Changes in the Next GenerationChanges in the WinCE OS
Developer-focused features / improvements
Runtimes support
Tools and emulation
Q&A
Smartphone 2002Smartphone 2002
TodayPPC 2002 SP 2002
WinCE OS 3.0 3.0
eVC 3.0 3.0
eVB 3.0 -
VS.NET 2003 -
.NETCF 1.0 -
MFC X -
ATL X -
eVB (runtime) X -
SQL CE X -
ADO.NET X -
MSMQ X -
Web Server X -
PPC 2002 SP 2002 PPC Ozone SP v.Next
WinCE OS 3.0 3.0 4.2 4.2
eVC 3.0 3.0 4.0 (SP2) 4.0 (SP2)
eVB 3.0 - - -
VS.NET 2003 - 2003 2003
.NETCF 1.0 - 1.0 1.0*
MFC X - X -
ATL X - X X
eVB (runtime) X - X (RAM) -
SQL CE X - X -
ADO.NET X - X X
MSMQ X - X X
Web Server X - X -
Next Gen
2002 Development Platform
Base OS
GUI / Shell / Ink
Today/Home-Screen
Connection Manager
POOM
Messaging
.NET Compact Framework
Device Management
Telephony
pIE
ActiveSync
RAPI
GAPI
MIDI, Vibrate, Speech
Developer Features in the Next Generation
Pocket PC Ozone Platform
Next Generation Smartphone
Windows CE 4.2 (McKendric)
Increased stability and reliability
Resource utilization optimizations
Security review
IPv6
Layer 2 Tunneling Protocol (L2TP) / IP Security Protocol (IPSec)
File System FiltersFile System Filters
Sit on top of the FS, intercept FS calls before FS handlingApply to any FSDMgr loaded file systemSupports multiple filters per file system
Useful for…Encrypt / DecryptCompress / UncompressVirus scan
Registration:[HKEY_LOCAL_MACHINE\System\StorageManager\Filters\FilterName]
"dll"="filter.dll""Order"=dword:x
Delta with FSDPVOLUME FSD_HookVolume( HDSK hdsk,PFILTERHOOK pFilterHook ); BOOL FSD_UnhookVolume ( PVOLUME pvol );
Device ManagementConfiguration Manager
Single point for configuration management
Parses configuration messages for CSPs
All operations transacted
Security role consistent across entire transaction
WAP Stack / WSP Push Source
User Interface
Configuration Manager
Configuration Service Provider
SMS Router
Control Panel Engine
Configuration Service Provider
Configuration Service Provider
Configuration Service Provider
Configuration Service Provider
Device Management
Configuration Manager Infrastructure now supported on Pocket PC Ozone(supports a subset of Smartphone CSPs)
Provisioning supported via WAP push (OTA)
CAB-based provisioning (.CPF)
DMProcessConfigXML API
RAPIConfig.exe from the desktop
Device Management CSPsActiveSyncConn
ActiveSyncPartner
BOOTSTRAP
BrowserFavorite
CertificateStore
Clock
Connection Manager
DeviceInformation
DeviceLock
FileOperation
Home
Install
LoaderRevocation
Locale
Metabase
Profiles
PXLOGICAL
Registry
SecurityPolicy
Sounds
Sync
Tapi
UnInstall
Remote Device Remote Device ConfigurationConfiguration
Device ManagementWAP Push Router interception (GSM only)
PushRouter_RegisterClient(LPCTSTR szContentType, LPCTSTR szAppId, LPCTSTR szPath, LPCTSTR szParams);
PushRouter_UnRegisterClient(LPCTSTR szContentType, LPCTSTR szAppId);
PushRouter_Open(LPCTSTR szContentType, LPCTSTR szAppId, HANDLE *pMsgAvailableEvent, HPUSHROUTER *phPushRouter);
PushRouter_Close(HPUSHROUTER hPushRouter);PushRouter_GetMessage(HPUSHROUTER hPushRouter,
PUSHMSG *pPushMsg);PushRouter_FreeMessage(PUSHMSG *pPushMsg);
ShellPPC File Explorer menu extensibility via IContextMenu
GetCommandString : Get info for the menu InvokeCommand : Execute commandQueryContextMenu : Adds commands to menu.
Ability to ensure display is on when notifications fire (PPC Only)
#define SHNF_DISPLAYON 0x00000010Activate process without turning on the displayAbility to debug Home/Today-Screen Plug-insSmartphone Home-Screen Plug-Ins:
SHOnPluginDataChangeIHomePluginEnvironment2
ShellContextual property query/modification
SHSetInputContext(HWND hwnd, DWORD dwFeature, LPVOID pValue);SHGetInputContext(HWND hwnd, DWORD dwFeature, LPVOID pValue,
DWORD dwSize);Features:
SHIC_RESTOREDEFAULT : Restore original stateSHIC_AUTOCORRECT : Auto-correctSHIC_AUTOCOMPLETE : Suggest words from dictionarySHIC_HAVETRAILER : Append trailer charactersSHIC_CLASS : Control semantic type
NULL (default)“email”“url”“phone”“name”
pIE Re-Architecture
HTML 4.01
XHTML
CSS
JScript 5.5
WML 2.0
IPv6
Extensible imaging through GDI+
Messaging
E-mail services configuration CSPSimplifies programmatic configuration on Pocket PC
SMS message interceptionsSMS clients, Games, Command and Control
Custom Read/Compose forms MMS/EMS clients, LOB apps, Games
CEMAPI cross-process notificationsMAPI clients, Filters, Journaling
Messaging
Folder created
Folder moved
Folder deleted
Message created
Message modified
Message deleted
Message moved
Message copied
Message store created
Message store deleted
CEMAPI Cross-Process Notifications:
SMS Message InterceptionImplement IMailRuleClient (COM Object)Register Rule Client DLL (\Software\Microsoft\Inbox\Svc\SMS\Rules)
Initialize and Set Access Rights:HRESULT MailRuleClient::Initialize
(IMsgStore *pMsgStore, MRCACCESS *pmaDesired){ *pmaDesired = MRC_ACCESS_WRITE; return S_OK; }
Process MessageHRESULT CMailRuleClient::ProcessMessage
(IMsgStore *pMsgStore, ULONG cbMsg, LPENTRYID lpMsg,
ULONG cbDestFolder, LPENTRYID lpDestFolder, ULONG *pulEventType, MRCHANDLED *pHandled)
{ ...GetText(lpMsg, &lpszMsgText); Get Propertiesif (ParseAndDeleteMsg(lpszMsgText)) For us?{ *pulEventType = fnevObjectDeleted; Mark Deleted
*pHandled = MRC_HANDLED_DONTCONTINUE;DoFunStuff( ... ); } Party!
}
SMS Interception and SMS Interception and ProcessingProcessing
Networking / CellCore
IPv6 workConnection Manager CSPs
CM_Networks – metanetworksCM_Planner – preferred connectionsCM_Mappings – URL mapping tableCM_GPRSEntries – GPRS entry configurationCM_PPPEntries – PPP entriesCM_ProxyEntries – Proxy connectionsCM_VPNEntries – VPN entry configurationCM_NetEntries – Network entries
Networking / CellCoreWAP over SMS
WapOpen (const WAP_LAYER wlLayer, const DWORD dwLocalPort, WAP_HANDLE* const pwhHandle,
HANDLE* const phMessageAvailableEvent );
WapClose ( const WAP_HANDLE whHandle );
WapSend ( const WAP_HANDLE whHandle, WAP_PRIMITIVE_BASE* const pwpbPrimitive );
WapGetNextPrimitiveSize ( const WAP_HANDLE whHandle, DWORD* const pdwNextPrimitiveSize );
WapRead ( const WAP_HANDLE whHandle, WAP_PRIMITIVE_BASE* const pwpbPrimitiveBuffer, const DWORD dwPrimitiveBufferSize );
WapPing ( const WAP_ADDRESS* const pwaAddress, const WORD wIdentifier, const DWORD dwSendDataSize, DWORD* const pdwReceiveDataSize, const DWORD dwTimeout );
Networking / CellCoreWTLS for PPC (already on SP)
Application wake-up via WAP (SMS)
Bluetooth Control Panelint BthSetMode( DWORD dwMode ); int BthGetMode( DWORD* pdwMode );enum BTH_RADIO_MODE{ BTH_POWER_OFF, BTH_CONNECTABLE, BTH_DISCOVERABLE };
Virtual Radio Virtual Radio SimulationSimulation
Apps / ActiveSync
Menu extensibility in Contacts, Calendar and Tasks applications via IContextMenu interface
ActiveSync can be configured via CSP
Backwards CompatibilityGoal is for 100% back compat
But, be aware:New OS (major revision from 3.0)
Same MFC, rebuilt ATL
COM objects are now free-threaded
eVB/ADO runtimes have been rebuilt
Some CEMAPI constants no longer supported
Few APIs migrated from one .h to another
Test, test, test!
Runtimes and Tools
Pocket PC Ozone, Smartphone v.NextNative Code Development
eVC++ 4.0
eVC++ 4.0 Service Pack 2 required
PPC: eVB/ADO runtime supported, but no eVB SDK/Tools
Managed Code Development (C# / VB.Net).NETCF in ROM
Visual Studio .NET 2003
All native and managed code development requires PPC/SP SDKs
eVC 4.0 (+SP2)Improved Debugging
JIT debugging (attach to dead process)
Attach to already running process
Multithreaded application debugging
Updated CompilersSEH and C++ exception handling
STL (Standard Template Library)
Intrinsics (generate in-line code)
Updated Remote Tools
eVB for Pocket PC Ozone
eVB stub replaces eVB run-time to free up ROM space
Hardware partners can choose to include runtime in their ROM region
Developers can package and deploy eVB runtime with app (part of SDK)
End-Users can download from website when prompted by stub
Emulation
Drive mapping support
Game APIs (GAPI)
Network Virtual Switch driverActiveSync over Ethernet
New telephony imagesPocket PC Phone Edition
Virtual Radio
ActiveSync over ActiveSync over Ethernet (Emulator)Ethernet (Emulator)
Managed Code DevelopmentVisual Studio .NET & .NET Compact Framework
Rich, deep API for smart devicesUser Interface: GDI+, Windows Forms
Connectivity: Web services, TCP/IP, IrDA
Data Access: ADO.NET, XML
Native code interoperability
JIT compiled, not interpretedBest of managed & native worlds
Visual Studio .NET IDESame skills as desktop and server
.NET Compact Framework Smartphone v.Next Support
Most PPC features fully supportedWindows Forms:
Controls adapted to have Smartphone look & feelSmartphone navigation model supportedSupport for keypad navigation and keypad events
.NET Compact Framework in ROMTools support as an add-on to VS.NET 2003
Smartphone x86 Emulation imagesAdapted Forms Designer Experience
Proper control set in toolboxAppropriate properties on controls (size/font/etc)
.NET Compact Framework .NET Compact Framework and Web Services onand Web Services onNext Generation SmartphoneNext Generation Smartphone
demodemo
Ozone SDK (Beta)Plug-ins for eVC++ 4.0 (SP2)Plug-ins for Visual Studio .NET 2003All required headers / libs / etc. (x86/ARM)Runtimes and components:
eVB runtimeHTTPD (Web Server)MSMQ
Emulation imagesPocket PCPocket PC Phone EditionPocket PC Phone Edition Virtual Radio
Updated samples collectionDesign guideReference documentation
Smartphone Developer KitSmartphone pre-release Compal device
Null SIM
Mobile Development Toolkit(Resource CD)
eMbedded Visual C++ 3.0
Smartphone 2002 SDK
Whitepapers, Getting Started, etc.
Available for 425€ at www.microsoft.com/mobile/
Next StepsNext Steps
Ask The ExpertsGet Your Questions Answered
I will be available in the ATE area after this session and all day tomorrow!
Community ResourcesCommunity ResourcesAsk your questions on our newsgroups:
microsoft.public.smartphone.developer
microsoft.public.pocketpc.developer
microsoft.public.dotnet.framework.compactframework
Check out our MVP sites for developers:www.smartphonedn.com
www.pocketpcdn.com
Download SDKs and eVCwww.microsoft.com/mobile/developer/
Visit the Windows Mobile™ Community:http://www.microsoft.com/windowsmobile/community/
evaluationsevaluations
© 2003 Microsoft Corporation. All rights reserved.© 2003 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
Top Related