
EMB319 The Benefits Of The CE 5.0 Bus Driver Architecture Jay Loney -Program Manager Steve Schrock-Software Design Engineer Microsoft Windows CE MEDC DevCon 2005
EMB319 The Benefits Of The CE 5.0 Bus Driver Architecture Jay Loney – Program Manager Steve Schrock – Software Design Engineer Microsoft Windows CE

Microsoft MEDC Mobile Embedded DevCon 2005 May9-12,2005 Las Vegas Microsoft

着Windows Mobile Windows CE5.0 Windows Windows Hardware/privers OEM/HV Supplied BSP OEM Hardware and Standard PC (ARM,SH4,MIPS) Standard Drivers Hardware and Drivers Windows XP DDK Platform Builder Windows Embedded Studio Lightweigh EDB SQL Server 2005 Express Edition Relational SQL Server 2005 Mobile Edition SQL Server 2005 Nativ Win32 MFC 8.0,ATL 8.0 Managed .NET Compact Framework .NET Framework server side ASP.NET Mobile Controls ASP.NET Windows Media Multimedia DirectX Location services MapPoint Development Tools Visual Studio 2005 Internet Security and Acceleration Server communications Exchange Server Messaging Live Communications Server Speech Server Device Update Agent Management Image Update Software Update Services Tools Systems Management Server Microsoft Operations Manager
Management Tools Communications & Messaging Device Update Agent Software Update Services Live Communications Server Exchange Server Internet Security and Acceleration Server Speech Server Image Update Location Services Multimedia MapPoint DirectX Windows Media Development Tools Visual Studio 2005 MFC 8.0, ATL 8.0 Native Win32 Managed Server Side Lightweight Relational EDB SQL Server 2005 Express Edition Data Programming Model Device Building Tools Hardware/Drivers Windows XP DDK Windows Embedded Studio Platform Builder OEM/IHV Supplied BSP (ARM, SH4, MIPS) OEM Hardware and Standard Drivers Standard PC Hardware and Drivers SQL Server 2005 Mobile Edition SQL Server 2005 ASP.NET Mobile Controls ASP.NET .NET Compact Framework .NET Framework Microsoft Operations Manager Systems Management Server

Overview ©l What is a bus driver,why do I care, what do I do with it? Architecture New Bus and Driver Namespace Registry Resource Allocation ⊙IOCTLs Application Child Child Helper functions
Overview What is a bus driver, why do I care, what do I do with it? Architecture New Bus and Driver Namespace Registry Resource Allocation IOCTLs Application Child Child Helper functions

What Is A Bus Driver?
What Is A Bus Driver?

No Really, What Is A Bus Driver? Typically loads/unloads drivers For HW on its physical bus Also when there's no physical bus Manages physical busses Calls ActivateDeviceEx()to load a device driver Provides services to child drivers
No Really, What Is A Bus Driver? Typically loads/unloads drivers For HW on its physical bus Also when there’s no physical bus Manages physical busses Calls ActivateDeviceEx() to load a device driver Provides services to child drivers

Why Do I Need Bus Drivers? Bus Drivers are the quick connect your client drivers need to be portable (Ok,I went overboard with the clip art)
Why Do I Need Bus Drivers? Bus Drivers are the quick connect your client drivers need to be portable (Ok, I went overboard with the clip art ☺)

Things You Couldn't Do Before CE5.0⑧ No relationship between device drivers and the entity that loads them A bus driver can't find out the stream name of the driver it loaded based on the handle it gets back External apps do not know who loaded a driver
Things You Couldn’t Do Before CE 5.0 No relationship between device drivers and the entity that loads them A bus driver can’t find out the stream name of the driver it loaded based on the handle it gets back External apps do not know who loaded a driver

Cool Things You Can Do Now! Bus drivers load/unload child drivers and/or re-enumerate their buses. Enabling child drivers to make requests of their bus driver (ex.power management updates) Allowing applications to enumerate devices,busses,and the interfaces they support
Cool Things You Can Do Now! Bus drivers load/unload child drivers and/or re-enumerate their buses. Enabling child drivers to make requests of their bus driver (ex. power management updates) Allowing applications to enumerate devices, busses, and the interfaces they support

Bus Drivers Protect You! During resume,bus drivers protect from touching hardware for a device that has been removed: Installable ISR Bus agnostic driver's power callback On resume,Child driver calls Bus driver to verify hardware is still there. IOCTL_BUS_IS_CHILD_REMOVED
Bus Drivers Protect You! During resume, bus drivers protect from touching hardware for a device that has been removed: Installable ISR Bus agnostic driver’s power callback On resume, Child driver calls Bus driver to verify hardware is still there. IOCTL_BUS_IS_CHILD_REMOVED