1 / 33

Windows Vista: Reaching Your Users When Their Machine Is Off, Using Auxiliary Display Devices

Windows Vista: Reaching Your Users When Their Machine Is Off, Using Auxiliary Display Devices. Sriram Viji, Program Manager Dan Polivy, Software Design Engineer Session PRS308 Microsoft Corporation. Agenda. Platform introduction Writing gadgets using C++ and COM Writing gadgets using C#

shauna
Download Presentation

Windows Vista: Reaching Your Users When Their Machine Is Off, Using Auxiliary Display Devices

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows Vista: Reaching Your Users When Their Machine Is Off, Using Auxiliary Display Devices Sriram Viji, Program Manager Dan Polivy, Software Design Engineer Session PRS308 Microsoft Corporation

  2. Agenda • Platform introduction • Writing gadgets using C++ and COM • Writing gadgets using C# • Design considerations

  3. Devices for Windows SideShow • Laptop in-lid displays • Connected and online displays • Remote or detachable devices

  4. Gadget Platforms • Windows SideShow • Extends data from the PC to devices • COM and C++ APIs • Windows Sidebar • Shows information on the client • DHTML scripting and libraries/WPF • Start.com • Web based with AJAX like architecture • Integration with client platform

  5. Platform Benefits • Increase application reach and visibility • Provide user value • Easy to write gadgets

  6. Windows SideShow Prototype

  7. Sample Scenarios • Cached/Offline scenarios: Calendar, driving directions, e-mail, weather, traffic • Make use of data that is cached on a device • User can interact when the PC is on or off • Live/Online scenarios: Media control, presentation control, instant messaging, notifications • Data and events sent during user interaction • User can interact when the PC is on

  8. User Control • User selects gadgets to view on device Installed Devices Installed Gadgets

  9. Software Architecture Gadget Auxiliary Display API Inter-process communication Auxiliary Display Driver Transport Channel Display Device

  10. Conference Scheduler

  11. Gadget Installation • Friendly name • Icon • Endpoint • Specifies data format between gadget and device Icon Friendly Name [HKCU\SOFTWARE\Microsoft\AuxiliaryDisplay\Applications\{APPLICATION_ID}] "FriendlyName"=“Application name” ; User friendly name “Icon”=myapplication.dll,0 ; 16,32,48 px icons "OnlineOnly"=dword:00000000 ; Is it “Live” or “Cached”? "Endpoints"=MULTI_SZ:Endpoint GUID(s) ; Data format(s) supported

  12. Registering A Session • Create an instance of the Registrar • Register application ID and data format // Create the AuxiliaryDisplayRegistrar object that // enables us to talk to the platform. hr = ::CoCreateInstance(CLSID_AuxiliaryDisplayRegistrar, NULL, CLSCTX_INPROC_SERVER, IID_IAuxiliaryDisplayRegistrar, (LPVOID*)&m_pRegistrar); if (SUCCEEDED(hr)) { // Register application with the platform hr = m_pRegistrar->Register(MY_APPLICATION_ID, AUX_ENDPOINT_SIMPLE_CONTENT_FORMAT, &m_pContentMgr); }

  13. Content Management Periodic updates (i.e. update “next session”) Response to action (i.e. send session details) User interaction (i.e. select session to attend) Startup: send initial content Update content Gadget Device User interacts with device (i.e. get details on a session)

  14. Creating Content • Developer implements IAuxiliaryDisplayContent • Returns a content ID (unsigned 32-bit value) • Provides the content as an array of bytes (opaque) • Allows developer to send different content to each device based on the device’s capabilities HRESULT get_ContentId( PCONTENT_ID out_pcontentId ); HRESULT get_DifferentiateContent( BOOL * out_pfDifferentiateContent ); HRESULT GetContent( IAuxiliaryDisplayCapabilities * in_pICapabilities, DWORD * out_pdwSize, BYTE ** out_ppbData );

  15. Content Format • Gadgets and devices need a common format to exchange data • Simple Content Format • New, Documented XML data format for which we are encouraging device support • Provides simple layout and interaction for devices with varying capabilities • Functions in both “PC on” (live/online) and “PC off” (cached) modes • iCalendar • Allows transfer of appointments in a standard format • Presentation is determined by the device; thus the calendar display and interaction can be richer than by using the Simple Content Format

  16. Glance Content • Glance or Overview Content • Content id of 0 reserved for overview content • Simple text string • Easy to support on all devices, regardless of actual content format used Glance Content

  17. Simple Content Format • Menu Page • Provides a list of items • Selection causes navigation • Can be used as a context menu on menu items and content pages <body> <menu id=“1” title="Image List"> <item target="2">Sunset</item> <item target="3">Winter</item> <item target="4">Water lilies</item> <item target="5">Blue hills</item> </menu> </body>

  18. Simple Content Format • Layout Page • Provides flow layout • Support for text and images • Simple text formatting (emphasis, color, alignment) • Button mapping to override default navigation action <body> <content id=“2”> <txt align="c">Sunset</txt> <txt>Driving on the coastal highway is fun</txt> <img id=“10" alt="[sunset.jpg]"/> </content> </body>

  19. Simple Content Format • Dialog Page • Provides simple dialog box with icon, title, message, buttons • User input on a decision • Icon available for visual clue <body> <dialog id="200" title="Image rotate"> <txt>Your image will lose some quality when rotated. Would you like to proceed?</txt> <btn target="201">Yes</btn> <btn target="202">No</btn> </dialog> </body>

  20. Sending/Updating Content • Content manager allows applications to • Add/Update content on devices • Remove content IAuxiliaryDisplayContent* pIContent; CMyContent pContent = new CMyContent(1 /* CONTENT_ID */, “Content”); hr = pContent->QueryInterface(IID_IAuxiliaryDisplayContent, &pIContent); // Add a content object that implements IAuxiliaryDisplayContent hr = m_pContentMgr->Add(pIContent); // Remove Content ID “1” from all devices hr = m_pContentMgr->Remove(1); // Remove all content from devices hr = m_pContentMgr->RemoveAll();

  21. Platform Events • ISV implements IAuxiliaryDisplayEvents interface • Four events • ContentMissing • Occurs when the device requires a specific piece of content it does not have cached • ApplicationEvent • Generated due to user interaction with the device, i.e. • User selection on a list item • Navigation to a specific page of content • Device Added/Device Removed • Includes both PnP events, as well as “permission change” events generated from enabling/disabling a gadget in the CPL

  22. Simple Content Format Events • Events propagated to PC gadget (when on) as user navigates content on device • NavigationEvent • Triggered upon any navigation starting on a content or dialog page • MenuEvent • Triggered upon selection of an item off a menu page • ContextMenuEvent • Triggered upon any navigation off of a context menu

  23. Device Capabilities • Developer can retrieve a collection of IAuxiliaryDisplayCapabilities interfaces from the Content Manager • Capabilities interface is external representation of a device • Can query device properties, such as: • Screen width/height • Color depth • Current language • IHV extensible • Interface also provided on some events to identify initiating device

  24. Notifications • IAuxiliaryDisplayNotificationManager interface mirrors the content manager • Show/Revoke/RevokeAll • IAuxiliaryDisplayNotification CoCreate’able by ISV • Properties • Title • Message • Icon • Expiration time

  25. Expedia.com

  26. Managed Code • Accessible through standard COM Interop • Same functionality available • Sample code provided for interop

  27. Design Considerations • Gadget lifetime management • User expects device to be up to date • Missing content needs to be provided • Options • Background process (as part of an existing system tray or any other process) • Add on to an existing application

  28. Design Considerations • Device Support • Support wide range of device capabilities • Recommendations • Provide useful glance content • Ensure accurate data for text only displays • If possible, differentiate content for displays • Performance • Mobile PCs are a big target – conserve battery • Selectively update content

  29. Summing Up • New opportunities and new scenarios • Value-add for existing applications • Tools and samples to get started

  30. Mobile PC and Tablet PCBreakout Sessions • PRS308 - Windows Vista: Reaching Your Users When Their Machine Is Off, Using Auxiliary Display DevicesWednesday, 1:45 PM - 3:00 PM • PRS315 - Windows Vista Tablet PC: Advances in Creating Tablet Enabled ApplicationsWednesday, 5:00 PM - 6:15 PM • DAT317 - Windows Vista: Centralizing Data Synchronization with the New Sync CenterThursday, 11:30 AM - 12:45 PM • FUN319 - Windows Vista: Developing Power-Aware ApplicationsThursday, 5:15 PM - 6:30 PM • PNL12 - Future Directions in Mobile Device HardwareFriday, 1:00 PM- 2:30 PM

  31. Get involved with Mobile PC and Tablet PC at PDC! • Hands-On-Labs Use the Tablet PCs located in the Presentation Track Section • PRSHOL26-Mobile PC: Getting Started with Auxiliary Displays (C++ and C#) - Provide your users with instant access to data—even in powered-down states—with Auxiliary Display devices on Windows Vista. • FUNHOL09 - Mobile PC: Building Energy Smart Windows Vista Applications (C#) - Learn how to be compatible with Windows Vista’s new Sleep behavior and learn how to integrate with the power policy engine to build a more robust application.   • PRSHOL31&PRSHOL32-Tablet PC: Getting Started with the Tablet PC Platform (C# and Visual Basic .NET) - Create ink-enabled forms to empower your Tablet PC customers by using ink controls, the InkPicture object, and other APIs from the Windows XP Tablet PC Edition SDK 1.7. • PRSHOL30-Tablet PC: Advanced Development with Stylus Input APIs (C#) - Enhance performance and rendering by using the Tablet PC Stylus Input API to intercept and modify stylus data in real time. • Get spotted with this button for a chance to win a Tablet PC!

  32. Resources • Windows SideShow at PDC • Hands on Lab: PRSHOL26 Mobile PC: Getting started with Auxiliary Displays / Windows SideShow • Booth: Prototype device and other concepts • PRS Track lounge: Wed 3-5pm • Related: PRS332 Developing Windows Sidebar GadgetsThu 3:45pm – 5:00pm 402AB • After PDC • Gadgets: http://microsoftgadgets.com/sideshow.aspx • Mobile PC and Tablet PC Forum under Windows Vista Development : http://forums.microsoft.com/msdn/ • Business Contact: mobaux@microsoft.com • Windows Vista Beta and SDK: http://msdn.microsoft.com/windowsvista/

  33. © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

More Related