MBL200: Next Generation Pocket PC and Smartphone Development Platform : MBL200: Next Generation Pocket PC and Smartphone Development Platform Neil Enns
Program Manager
Mobiles Devices Product Group
Microsoft Corporation
Agenda : Agenda
Overview of Development Platform
Key Changes in the Next Generation
Changes in the WinCE OS
Developer-focused features / improvements
Runtimes support
Tools and emulation
Q&A
Slide3 : Smartphone 2002
Today : Today Next Gen
2002 Development Platform : 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 : Developer Features in the Next Generation Pocket PC Ozone Platform
Next Generation Smartphone
Windows CE 4.2 (McKendric) : 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 Filters : File System Filters File System Filters
Sit on top of the FS, intercept FS calls before FS handling
Apply to any FSDMgr loaded file system
Supports multiple filters per file system
Useful for…
Encrypt / Decrypt
Compress / Uncompress
Virus scan
Registration:
[HKEY_LOCAL_MACHINE\System\StorageManager\Filters\FilterName]
"dll"="filter.dll"
"Order"=dword:x
Delta with FSD
PVOLUME FSD_HookVolume( HDSK hdsk,PFILTERHOOK pFilterHook );
BOOL FSD_UnhookVolume ( PVOLUME pvol );
Device Management : Device Management Configuration Manager
Single point for configuration management
Parses configuration messages for CSPs
All operations transacted
Security role consistent across entire transaction
Device Management : 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 CSPs : Device Management CSPs ActiveSyncConn
ActiveSyncPartner
BOOTSTRAP
BrowserFavorite
CertificateStore
Clock
Connection Manager
DeviceInformation
DeviceLock
EMail
FileOperation
Home
Install
LoaderRevocation
Locale
Metabase
Profiles
PXLOGICAL
Registry
SecurityPolicy
Sounds
Sync
Tapi
UnInstall
Slide12 : Remote Device Configuration
Device Management : Device Management WAP 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);
Shell : Shell PPC File Explorer menu extensibility via IContextMenu
GetCommandString : Get info for the menu
InvokeCommand : Execute command
QueryContextMenu : Adds commands to menu.
Ability to ensure display is on when notifications fire (PPC Only)
#define SHNF_DISPLAYON 0x00000010
Activate process without turning on the display
Ability to debug Home/Today-Screen Plug-ins
Smartphone Home-Screen Plug-Ins:
SHOnPluginDataChange
IHomePluginEnvironment2
Shell : Shell Contextual property query/modification SHSetInputContext(HWND hwnd, DWORD dwFeature, LPVOID pValue);
SHGetInputContext(HWND hwnd, DWORD dwFeature, LPVOID pValue, DWORD dwSize);
Features:
SHIC_RESTOREDEFAULT : Restore original state
SHIC_AUTOCORRECT : Auto-correct
SHIC_AUTOCOMPLETE : Suggest words from dictionary
SHIC_HAVETRAILER : Append trailer characters
SHIC_CLASS : Control semantic type
NULL (default)
“email”
“url”
“phone”
“name”
pIE Re-Architecture : pIE Re-Architecture HTML 4.01
XHTML
CSS
JScript 5.5
WML 2.0
IPv6
Extensible imaging through GDI+
Messaging : Messaging E-mail services configuration CSP
Simplifies programmatic configuration on Pocket PC
SMS message interceptions
SMS clients, Games, Command and Control
Custom Read/Compose forms
MMS/EMS clients, LOB apps, Games
CEMAPI cross-process notifications
MAPI clients, Filters, Journaling
Messaging : 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 Interception : SMS Message Interception Implement 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 Message
HRESULT CMailRuleClient::ProcessMessage (IMsgStore *pMsgStore, ULONG cbMsg, LPENTRYID lpMsg, ULONG cbDestFolder, LPENTRYID lpDestFolder, ULONG *pulEventType, MRCHANDLED *pHandled)
{ ...
GetText(lpMsg, &lpszMsgText); Get Properties
if (ParseAndDeleteMsg(lpszMsgText)) For us?
{ *pulEventType = fnevObjectDeleted; Mark Deleted *pHandled = MRC_HANDLED_DONTCONTINUE;
DoFunStuff( ... ); } Party!
}
Slide20 : SMS Interception and Processing
Networking / CellCore : Networking / CellCore IPv6 work
Connection Manager CSPs
CM_Networks – metanetworks
CM_Planner – preferred connections
CM_Mappings – URL mapping table
CM_GPRSEntries – GPRS entry configuration
CM_PPPEntries – PPP entries
CM_ProxyEntries – Proxy connections
CM_VPNEntries – VPN entry configuration
CM_NetEntries – Network entries
Networking / CellCore : Networking / CellCore WAP 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 / CellCore : Networking / CellCore WTLS for PPC (already on SP)
Application wake-up via WAP (SMS)
Bluetooth Control Panel
int BthSetMode( DWORD dwMode );
int BthGetMode( DWORD* pdwMode );
enum BTH_RADIO_MODE
{ BTH_POWER_OFF,
BTH_CONNECTABLE,
BTH_DISCOVERABLE };
Slide24 : Virtual Radio Simulation
Apps / ActiveSync : Apps / ActiveSync Menu extensibility in Contacts, Calendar and Tasks applications via IContextMenu interface
ActiveSync can be configured via CSP
Backwards Compatibility : Backwards Compatibility Goal 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 : Runtimes and Tools Pocket PC Ozone, Smartphone v.Next
Native 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) : eVC 4.0 (+SP2) Improved Debugging
JIT debugging (attach to dead process)
Attach to already running process
Multithreaded application debugging
Updated Compilers
SEH and C++ exception handling
STL (Standard Template Library)
Intrinsics (generate in-line code)
Updated Remote Tools
eVB for Pocket PC Ozone : 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 : Emulation Drive mapping support
Game APIs (GAPI)
Network Virtual Switch driver
ActiveSync over Ethernet
New telephony images
Pocket PC Phone Edition
Virtual Radio
Slide31 : ActiveSync over Ethernet (Emulator)
Managed Code DevelopmentVisual Studio .NET & .NET Compact Framework : Managed Code Development Visual Studio .NET & .NET Compact Framework Rich, deep API for smart devices
User Interface: GDI+, Windows Forms
Connectivity: Web services, TCP/IP, IrDA
Data Access: ADO.NET, XML
Native code interoperability
JIT compiled, not interpreted
Best of managed & native worlds
Visual Studio .NET IDE
Same skills as desktop and server
.NET Compact Framework Smartphone v.Next Support : .NET Compact Framework Smartphone v.Next Support Most PPC features fully supported
Windows Forms:
Controls adapted to have Smartphone look & feel
Smartphone navigation model supported
Support for keypad navigation and keypad events
.NET Compact Framework in ROM
Tools support as an add-on to VS.NET 2003
Smartphone x86 Emulation images
Adapted Forms Designer Experience
Proper control set in toolbox
Appropriate properties on controls (size/font/etc)
Slide34 : .NET Compact Framework and Web Services on Next Generation Smartphone demo
Ozone SDK (Beta) : Ozone SDK (Beta) Plug-ins for eVC++ 4.0 (SP2)
Plug-ins for Visual Studio .NET 2003
All required headers / libs / etc. (x86/ARM)
Runtimes and components:
eVB runtime
HTTPD (Web Server)
MSMQ
Emulation images
Pocket PC
Pocket PC Phone Edition
Pocket PC Phone Edition Virtual Radio
Updated samples collection
Design guide
Reference documentation
Smartphone Developer Kit : Smartphone Developer Kit Smartphone 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/
Slide37 : Next Steps
Ask The ExpertsGet Your Questions Answered : Ask The Experts Get Your Questions Answered I will be available in the ATE area after this session and all day tomorrow!
Slide39 : Community Resources Ask 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 eVC
www.microsoft.com/mobile/developer/
Visit the Windows Mobile™ Community:
http://www.microsoft.com/windowsmobile/community/
Slide40 : evaluations
Slide41 : © 2003 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.