How to Take Advantage of Footprint Reduction in Windows XP Embedded Service Pack 2 Feature Pack 2007
8/22/2007
Microsoft Corporation.
November 2006.
Learn how to take advantage of component re-factoring to reduce the footprint of the Windows XP Embedded run-time image when upgrading an existing target device configuration file from Windows XP Embedded Service Pack 2 to Windows XP Embedded Service Pack 2 Feature Pack 2007.
Windows XP Embedded Service Pack 2 Feature Pack 2007 systems.
Introduction
Re-factored Components
Removing Unnecessary Components
Known Changes in Component Dependencies
Internet Explorer 6 Re-factoring and Footprint Reduction
Other Key Re-factored Components for Footprint Reduction
Conclusion
Many components in Windows XP Embedded Service Pack 2 Feature Pack 2007 are re-factored to reduce unnecessary dependencies. The paper discusses key component re-factoring and provides the procedure for removing unneeded components from the Windows XP Embedded run-time image when upgrading an existing target device configuration file from Windows XP Embedded Service Pack 2 to Windows XP Embedded Service Pack 2 Feature Pack 2007.
Many Windows XP Embedded Service Pack 2 Feature Pack 2007 components are enhanced to remove unused dependencies or to factor out binaries that benefit other features. Key components re-factored in Windows XP Embedded Service Pack 2 Feature Pack 2007 include:
- .NET Framework 1.1
- Administration Support Tools
- Certificate Request Client & Certificate Autoenrollment
- COM Base
- Common File Dialogs
- Compression and Expansion Tools
- Core Certificate Services
- Credential Management User Interface
- DHCP Monitor Library
- Dialer Application
- Explorer Application
- Help and Support Services
- HTML Rendering Engine
- IIS FTP Server
- IIS Internet Manager
- IIS Web Server
- IMAPI - CD Burning
- Internet Connection Wizard
- Internet Explorer 6
- Microsoft Foundation Class Library (Legacy)
- Microsoft Vector Graphics Rendering (VML)
- Msxml 3.1
- Multicast DHCP
- Netbios over TCP/IP
- Netlogon/NetJoin
- Netshell
- Network Configuration
- Outlook Express
- Peer to Peer Networking
- Remote Access Monitor
- Remote Assistance Channel
- Shell Namespace Extensions
- Simple Network Management Protocol (SNMP)
- Smart Card Cryptographic Service Providers
- Soap Client Runtime
- Telnet Server Administration
- Terminal Server Client
- Terminal Services Runtime
- Urlmon Library
- Users Control Panel
- Volume Shadow Copy Service
- Windows .Net Messenger
- Windows Firewall/Internet Connection Sharing (ICS)
- Windows Media Player 9.0
- Windows Movie Maker
- Windows NT MARTA Provider
- Windows Script Engines
- Wininet Library
- WMI Core
For new Windows XP Embedded Service Pack 2 Feature Pack 2007 target device configurations, the check dependencies command in Target Designer automatically reduces the Windows XP Embedded run-time image footprint as components are added. No special procedures are needed.
In contrast, Target Designer does not automatically remove now-obsolete dependencies when upgrading an existing target device configuration (.slx) file from Windows XP Embedded Service Pack 2 to Windows XP Embedded Service Pack 2 Feature Pack 2007. For target device configuration upgrades, manually remove unnecessary dependencies to construct a run-time image with a smaller footprint.
For example, in Windows XP Embedded Service Pack 2 Feature Pack 2007, the WMI Core component no longer depends on the Volume Shadow Copy Service component. When upgrading an existing target device configuration, use the enhanced Windows XP Embedded Service Pack 2 Feature Pack 2007 component database package to reduce the run-time image footprint by manually removing the Volume Shadow Copy Service Administrator component and all of its associated dependencies as follows:
+Volume Shadow Copy Service
++Indexing Service
+++Filter Mime Messages for the Indexing Service
++Removable Storage Service
After manually removing the Volume Shadow Copy Service component and the components on which it depends, run the Target Designer check dependencies command to ensure that the components are safely removed. If the removed components reappear in the configuration after check dependencies executes, then other features or components depend on them.
The following procedure specifies how to identify and remove obsolete dependencies when upgrading an existing target device configuration file from Windows XP Embedded Service Pack 2 to Windows XP Embedded Service Pack 2 Feature Pack 2007.
No automated tool is provided to remove unnecessary component dependences when upgrading an existing target device configuration file from Windows XP Embedded Service Pack 2 to Windows XP Embedded Service Pack 2 Feature Pack 2007.
However, Windows XP Embedded Service Pack 2 Feature Pack 2007 includes a new command-line tool, XPECMD, to query component dependencies in the Windows XP Embedded component database. Use XPECMD to identify and remove obsolete component dependencies.
XPECMD is written in VBScript and requires Microsoft Windows Script Host (CScript) to run. XPECMD is located in the Program Files\Windows Embedded\bin folder. For more information on how to use XPECMD, please refer to Windows XP Embedded Service Pack 2 Feature Pack 2007 Help.
For each component listed in Refactored Components, first use XPECMD to identify its previous and current dependencies, then manually remove obsolete dependencies.
To use XPECMD to Identify and Remove Obsolete Dependencies for a Component
Using the Command Prompt, run the following command to generate the dependency tree for the component at its previous revision number:
XPECMD> DEPTREE /4 ‘comp:component name|revision number’
where component name is the name of the component in Target Designer and where revision number is the revision number in the previous configuration, for example, R2890 for Windows XP Embedded Service Pack 2.
Using the Command Prompt, run the following command to generate the dependency tree for the component at the Windows XP Embedded Service Pack 2 Feature Pack 2007 revision number (that is, R3333):
XPECMD> DEPTREE /4 ‘comp:component name|R3333’
where component name is the name of the component in Target Designer
Examine the difference in the dependency trees to identify changes in the component dependencies introduced in the upgrade to Windows XP Embedded Service Pack 2 Feature Pack 2007. In Target Designer, manually remove those dependencies rendered obsolete in Windows XP Embedded Service Pack 2 Feature Pack 2007.
Removed dependencies may themselves be dependent on other components. For each removed component, repeat steps 1 through 3 until all unnecessary component dependencies are eliminated from the configuration.
After completing the procedure for all relevant components, run Check Dependencies in Target Designer to confirm that the dependencies have been removed properly. If other components in the target configuration depend on the removed components, Target Designer automatically adds them back into the target configuration.
The procedure for identifying obsolete components described in Using XPECMD to Identify and Remove Obsolete Dependencies may be tedious and time consuming. To simplify the task of reducing the run-time image footprint when upgrading an existing target device configuration file, the following table provides a list of key components with dependencies removed from, and newly-added to, Windows XP Embedded Service Pack 2 Feature Pack 2007
Please note that this is not a complete list of components, but it does indicate where most footprint reduction activity is concentrated. This list is generated using the XPECMD tool as described in Using XPECMD to Identify and Remove Obsolete Dependencies.
Component | Removed Dependencies | Added Dependencies |
---|---|---|
.NET Framework 1.1 |
+> Internet Explorer |
+> Primitive: ACTXPRXY.DLL |
Administration Support Tools |
None |
+> Primitive: Localsec.dll |
Certificate Request Client & Certificate Autoenrollment |
+> Active Template Library (ATL) +> Common Control Libraries Version 5 +> Core Certificate Services +> Local Security Authority Subsystem (LSASS) +> Primitive: Dnsapi +> Primitive: Msasn1 +> Primitive: Netrap +> Primitive: Security +> Primitive: Shell32 +> Primitive: Userenv +> Primitive: Version +> Primitive: Wintrust +> Primitive: Ws2_32 +> Primitive: Wtsapi32 +> Primitive: Xenroll +> Security Accounts Manager Client +> Windows API - GDI +> Wininet Library |
None |
COM Base |
+> Primitive: Crypt32 +> Primitive: Mpr +> Primitive: Netapi32 +> Primitive: Oleaut32 +> Primitive: Secur32 +> Primitive: Shell32 +> Primitive: Userenv +> Urlmon Library |
None |
Common File Dialogs |
+> Primitive: uxtheme +> Primitive: Winspool |
None |
Compression and Expansion Tools |
+> Group: Kernel [Version 5.1.2600.2180, R2890] |
+> Primitive: lz32.dll |
Core Certificate Services |
+> Common Control Libraries Version 5 +> Primitive: CryptUI +> Primitive: Imagehlp +> Primitive: Msasn1 +> Primitive: Shell32 +> Primitive: Userenv +> Primitive: Xenroll |
None |
Credential Management User Interface |
+> Common Control Libraries Version 5 +> Primitive: Crypt32 +> Primitive: CryptUI +> Primitive: Dnsapi +> Primitive: Netapi32 +> Primitive: Ole32 +> Primitive: Secur32 +> Primitive: Shlwapi +> Wininet Library |
None |
DHCP Monitor Library |
+> Primitive: Mprapi +> Primitive: Rasapi32 |
None |
Dialer Application |
+> Outlook Express |
+> Primitive: wab32 |
Explorer Application |
+> Common Control Libraries Version 5 +> Common File Dialogs +> Primitive: Cfgmgr32 +> Primitive: Setupapi +> Primitive: Winmm +> Primitive: Winsta +> Primitive: Wtsapi32 +> Windows XP Service Pack 2 Resource DLL |
None |
Help and Support Services |
+> Internet Explorer +> Windows Media Player 9.0 +> Windows Product Activation Notification |
+> Help Center and Services" +> Primitive: HLINK.DLL" +> Primitive: IEINFO5.OCX" +> Windows Media Player 10" (Please note that Help Center and Services is a new component created as part of re-factoring for Help and Support Services) |
HTML Rendering Engine |
+> Internet Explorer |
+> Primitive: INSENG.DLL |
IIS FTP Server |
+> Simple Network Management Protocol (SNMP) |
+> Primitive: snmpapi.dll |
IIS Internet Manager |
+> FBA: Optional Components +> Common Control Libraries Version 5 +> Outlook Express +> Rich Edit Control Version 3.0 |
None |
IIS Web Server |
+> Simple Network Management Protocol (SNMP) |
+> Primitive: snmpapi.dll |
IMAPI - CD Burning |
+> Internet Explorer |
+> Primitive: ACTXPRXY.DLL |
Internet Connection Wizard |
+> Internet Explorer |
+> Primitive: iedkcs32.dll +> Primitive: IEXPLORE.EXE |
Internet Explorer |
+> Base Support Binaries +> Compression and Expansion Tools +> Fonts: Fonts Arial +> Fonts: Fonts Microsoft_San_Serif +> Fonts: Fonts Tahoma +> Fonts: Fonts verdana +> Fonts: Fonts webdings +> Fonts: Fonts wingdings +> Mapi32 Libraries +> Microsoft Foundation Class Library (Legacy) +> Microsoft Foundation Class Library (MFC) +> Microsoft Line Services +> Primitive: Browseui +> Primitive: Cdfview +> Primitive: Comcat +> Primitive: Icfgnt5 +> Primitive: Iphlpapi +> Primitive: Mpr +> Primitive: Msvcrt40 +> Primitive: Security +> Primitive: Sendmail +> Primitive: Setupapi +> Primitive: Tapi32 +> Primitive: Userenv +> Primitive: uxtheme +> Primitive: Winmm +> Protected Storage Service +> Windows Script Engines |
+> Primitive: ACTXPRXY.DLL +> Primitive: cryptdlg.dll +> Primitive: DXTRANS.DLL +> Primitive: HLINK.DLL +> Primitive: iedkcs32.dll +> Primitive: IEINFO5.OCX +> Primitive: IEXPLORE.EXE +> Primitive: IMGUTIL.DLL +> Primitive: INETCPL.CPL +> Primitive: INSENG.DLL +> Primitive: JSPROXY.DLL +> Primitive: MSHTA.EXE +> Primitive: MSIDENT.DLL +> Primitive: MSIDNTLD.DLL +> Primitive: MSRATING.DLL +> Internet Explorer Version Information |
Microsoft Foundation Class Library (Legacy) |
+> Common Control Libraries Version 5 +> Common File Dialogs +> Ole Automation +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Shell32 +> Win32 API - Advanced |
None |
Microsoft Vector Graphics Rendering (VML) |
+> Internet Explorer |
None |
Msxml 3.1 |
+> Local Security Authority Subsystem (LSASS) +> Primitive: Advpack +> Primitive: Crypt32 +> Primitive: Mlang +> Primitive: Ntdll +> Primitive: Oleaut32 +> Primitive: Security +> Primitive: Version +> Primitive: Ws2_32 +> Primitive: Wsock32 +> Urlmon Library +> Windows API - Advanced +> Windows API - GDI +> Windows API - User +> Wininet Library |
None |
Multicast DHCP |
+> Routing Common Files |
None |
Netbios over TCP/IP |
+> Primitive: Icmp +> Primitive: Wsock32 +> Windows API - User |
None |
Netlogon/NetJoin |
+> Primitive: Shell32 +> Primitive: Secur32 +> Primitive: Userenv +> Active Template Library (ATL) +> Primitive: Crypt32 +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Security +> Primitive: CryptUI +> Primitive: CertCli +> Primitive: Version +> Primitive: Msasn1 +> MSFS +> Primitive: Sclgntfy +> Multi-Protocol Router Service Messages Library +> Workstation Service |
None |
Netshell |
+> DHCP Client Service +> Primitive: Devmgr +> Primitive: Dnsapi +> Primitive: Mprapi +> Primitive: Netapi32 +> Primitive: Netcfgx +> Primitive: Rasapi32 +> Primitive: Setupapi +> Primitive: Winspool |
None |
Network Configuration |
+> Primitive: Crypt32 +> Primitive: Netcfgx +> Primitive: NetClass +> Primitive: Netman +> Primitive: Oleaut32 +> Primitive: Secur32 +> Primitive: Shlwapi +> Primitive: Winsta +> Primitive: Wmi +> Primitive: Wtsapi32 +> Routing Common Files +> RPC Local Support +> Windows API - Advanced +> Windows API - User |
None |
Outlook Express |
+> Internet Explorer +> Media Files +> Msxml Libraries +> Netshell +> Primitive: Crypt32 +> Primitive: CryptUI +> Primitive: Msasn1 +> Primitive: Msi +> Primitive: Rasapi32 +> Primitive: Shdocvw +> Primitive: Winmm +> Primitive: Wintrust +> Primitive: Wldap32 +> Primitive: Wsock32 +> Protected Storage Service +> Rich Edit Control Version 1.0 +> Urlmon Library +> Wininet Library |
+> Primitive: cryptdlg.dll +> Primitive: HLINK.DLL +> Primitive: IEXPLORE.EXE +> Primitive: INETCPL.CPL +> Primitive: MSIDENT.DLL +> Primitive: msoert2 +> Primitive: Shdoclc +> Primitive: wab32 |
Peer to Peer Networking |
+> NDIS Tunnel Miniport Driver +> NetIP6 Inf +> Simple Network Management Protocol (SNMP) +> TCP/IP Version 6 +> Windows XP Service Pack 2 OOB Resource DLL |
None |
Remote Access Monitor |
+> Primitive: Rasapi32 |
None |
Remote Assistance Channel |
+> Help and Support Services |
+> Help Center and Services |
Shell Namespace Extensions |
+> Common Control Libraries Version 5 +> Explorer Application +> Internet Explorer +> Primitive: Mpr +> Primitive: Rundll32 +> Wininet Library |
+> Primitive: MSRATING.DLL |
Simple Network Management Protocol (SNMP) |
None |
+> Primitive: snmpapi.dll |
Smart Card Cryptographic Service Providers |
+> Primitive: Setupapi +> Primitive: Userenv +> Primitive: Winmm +> Primitive: Winspool +> Primitive: Winsta |
None |
Soap Client Runtime |
+> Internet Explorer |
None |
Telnet Server Administration |
+> Common Control Libraries Version 5 +> Primitive: Shell32 +> Primitive: Winspool +> Windows API - GDI |
None |
Terminal Server Client |
+> Primitive: Winmm +> Primitive: Winspool |
None |
Terminal Services Runtime |
+> Primitive: Wtsapi32 |
None |
Urlmon Library |
+> Primitive: Ntdll |
None |
Users Control Panel |
None |
+> Microsoft Management Console (MMC)" +> Primitive: Localsec.dll" +> Primitive: MSHTA.EXE" +> Windows Picture and Fax Viewer" |
Volume Shadow Copy Service |
None |
+> Primitive: vssapi.dll |
Windows .Net Messenger |
+> Internet Explorer +> Windows Firewall/Internet Connection Sharing (ICS) +> Windows Script Engines |
+> Packet Scheduler Miniport +> Primitive: HNETCFG.DLL +> Primitive: jscript.dll +> Primitive: JSPROXY.DLL +> Quality of Service RSVP |
Windows Firewall/Internet Connection Sharing (ICS) |
+> Common Control Libraries Version 5 +> Common File Dialogs +> DHCP Client Service +> Netshell +> Primitive: Dnsapi +> Primitive: Iphlpapi +> Primitive: Mprapi +> Primitive: Msasn1 +> Primitive: Netapi32 +> Primitive: Rasapi32 +> Primitive: Shell32 +> Primitive: Shlwapi +> Service Control Manager (SCM) +> TCP/IP Networking +> Windows API - GDI +> Windows XP Service Pack 2 OOB Resource DLL +> Windows XP Service Pack 2 Resource DLL +> Wininet Library |
+> Primitive: HNETCFG.DLL |
Windows Media Player 9.0 |
(Upgraded to Windows Media Player 10) |
None |
Windows Movie Maker |
+> Internet Explorer +> Windows Media Player 9.0 |
+> Primitive: DXTRANS.DLL +> Windows Media Player 10 |
Windows NT MARTA Provider |
+> Local Security Authority Subsystem (LSASS) +> Primitive: Dnsapi +> Primitive: Netapi32 +> Primitive: Netrap +> Primitive: Secur32 +> Primitive: Shlwapi +> Primitive: Winspool +> Primitive: Ws2_32 +> Primitive: Ws2Help +> Primitive: Wsock32 +> Windows API - GDI |
None |
Windows Script Engines |
+> Group: Kernel [Version 5.1.2600.2180, R2890] +> RPC Local Support +> Urlmon Library |
+> Primitive: jscript.dll +> Primitive: vbscript.dll +> Primitive: Mlang |
Wininet Library |
+> Primitive: Ntdll |
None |
WMI Core |
+> Primitive: AuthZ +> Primitive: Netapi32 +> Primitive: Psapi +> Volume Shadow Copy Service +> Windows API - GDI |
+> Primitive: vssapi.dll |
After removing the first level of dependencies listed in the table above, optionally remove the associated second-level dependencies, which are listed in the table below. The second level dependencies listed are discovered using the XPECMD tool on Windows XP Embedded component databases prior to FP2007.
First Level Component Removed | Second Level Dependencies |
---|---|
Active Template Library (ATL) |
+> Visual C++ Runtime Libraries (SideX Side) +> Microsoft Visual C++ Run Time +> Ole Automation +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Oleaut32 +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User |
Base Support Binaries |
+> Common Control Libraries Version 5 +> Common File Dialogs +> Microsoft Visual C++ Run Time +> Primitive: Cabinet +> Primitive: Ntdll +> Primitive: Olecli32 +> Primitive: Olesvr32 +> Primitive: Rundll32 +> Primitive: Shdocvw +> Primitive: Shell32 +> Primitive: Shlwapi +> Primitive: Version +> Shell Group Conversion Registry Data +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User +> Wininet Library |
Common Control Libraries Version 5 |
+> Common Control Libraries Version 6 +> Primitive: Ntdll +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User |
Common File Dialogs |
+> Common Control Libraries Version 5 +> Primitive: Ntdll +> Primitive: Shell32 +> Primitive: Shlwapi +> Primitive: uxtheme +> Primitive: Winspool +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User |
Compression and Expansion Tools |
+> Group: Kernel [Version 5.1.2600.2180, R2890] +> Microsoft Visual C++ Run Time +> Primitive: Cabinet +> Primitive: Ntdll +> Win32 API - Kernel +> Win32 API - User |
Core Certificate Services |
+> Common Control Libraries Version 5 +> Microsoft Visual C++ Run Time +> Primitive: CertCli +> Primitive: Crypt32 +> Primitive: CryptUI +> Primitive: Esent +> Primitive: Imagehlp +> Primitive: Msasn1 +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Shell32 +> Primitive: Userenv +> Primitive: Version +> Primitive: Wintrust +> Primitive: Xenroll +> RPC Local Support +> Windows API - Advanced +> Windows API - Kernel +> Windows API - User +> Wininet Library |
DHCP Client Service |
+> Microsoft Visual C++ Run Time +> Primitive: Dnsapi +> Primitive: Iphlpapi +> Primitive: Ntdll +> Primitive: Secur32 +> Primitive: Ws2_32 +> RPC Local Support +> Windows API - Advanced +> Windows API - Kernel +> Windows API - User |
Internet Explorer |
+> Active Template Library (ATL) +> Base Support Binaries +> CodePage: 28591 (ISO 8859-1 Latin I) +> Common Control Libraries Version 5 +> Common File Dialogs +> Compression and Expansion Tools +> DirectDraw +> DirectDrawEx +> Down-level Shell Compat +> Fonts: Fonts Arial +> Fonts: Fonts Microsoft_San_Serif +> Fonts: Fonts Tahoma +> Fonts: Fonts verdana +> Fonts: Fonts webdings +> Fonts: Fonts wingdings +> HTML Rendering Engine +> Mapi32 Libraries +> Microsoft Foundation Class Library (Legacy) +> Microsoft Foundation Class Library (MFC) +> Microsoft Line Services +> Microsoft Visual C++ Run Time +> Primitive: Advpack +> Primitive: Browselc +> Primitive: Browseui +> Primitive: Cdfview +> Primitive: Comcat +> Primitive: Crypt32 +> Primitive: Digest +> Primitive: Fixmapi +> Primitive: Icfgnt5 +> Primitive: Iphlpapi +> Primitive: Mlang +> Primitive: Mpr +> Primitive: Msvcrt40 +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Security +> Primitive: Sendmail +> Primitive: Setupapi +> Primitive: Shdoclc +> Primitive: Shdocvw +> Primitive: Shell32 +> Primitive: Shlwapi +> Primitive: Shmgrate +> Primitive: Tapi32 +> Primitive: Userenv +> Primitive: uxtheme +> Primitive: Version +> Primitive: Winmm +> Primitive: Winspool +> Primitive: Wintrust +> Primitive: Ws2_32 +> Primitive: Wsock32 +> Protected Storage Service +> RPC Local Support +> Shell Namespace Extensions +> Urlmon Library +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User +> Windows Script Engines +> Wininet Library |
Local Security Authority Subsystem (LSASS) |
+> Lightweight Directory Access Protocol (LDAP) client +> Microsoft Visual C++ Run Time +> NPFS +> Primitive: AuthZ +> Primitive: Crypt32 +> Primitive: Cryptdll +> Primitive: Dnsapi +> Primitive: Esent +> Primitive: Iphlpapi +> Primitive: Ksecdd +> Primitive: Mpr +> Primitive: Msasn1 +> Primitive: Msctf +> Primitive: Msvcrt40 +> Primitive: Netapi32 +> Primitive: Ntdll +> Primitive: Secur32 +> Primitive: Userenv +> Primitive: Wldap32 +> Primitive: Ws2_32 +> RPC Local Support +> RPC Server +> Security Accounts Manager Client +> Security Accounts Manager Server Library +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User +> Windows NT MARTA Provider |
Mapi32 Libraries |
+> Primitive: Ntdll +> Win32 API - Advanced +> Win32 API - Kernel +> Win32 API - User |
Microsoft Foundation Class Library (Legacy) |
+> Common Control Libraries Version 5 +> Common File Dialogs +> Microsoft Visual C++ Run Time +> Ole Automation +> Primitive: Msvcrt40 +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Shell32 +> Win32 API - Advanced +> Win32 API - GDI +> Win32 API - Kernel +> Win32 API - User |
Microsoft Foundation Class Library (MFC) |
+> Microsoft Visual C++ Run Time +> Primitive: Ntdll +> Visual C++ Runtime Libraries (Side X Side) +> Windows API - GDI +> Windows API - Kernel +> Windows API - User |
Msxml Libraries |
+> Msxml 3.1 +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Shlwapi +> Urlmon Library +> Windows API - Advanced +> Windows API - Kernel +> Windows API - User +> Wininet Library |
Multi-Protocol Router Service Messages Library |
+> Primitive: Mpr +> Primitive: Mprapi +> Primitive: Ntdll +> Windows API - Kernel |
NDIS Tunnel Miniport Driver |
+> Ndis |
Netshell |
+> Active Template Library (ATL) +> Credential Management User Interface +> DHCP Client Service +> Microsoft Visual C++ Run Time +> Primitive: Crypt32 +> Primitive: Devmgr +> Primitive: Dnsapi +> Primitive: Iphlpapi +> Primitive: Mprapi +> Primitive: Msimg32 +> Primitive: Netapi32 +> Primitive: Netcfgx +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Rasapi32 +> Primitive: Setupapi +> Primitive: Shell32 +> Primitive: Shlwapi +> Primitive: uxtheme +> Primitive: Winspool +> Primitive: Ws2_32 +> Routing Common Files +> RPC Local Support +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User +> WinHTTP +> Wireless Zero Configuration |
Ole Automation |
+> Microsoft Visual C++ Run Time +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Oleaut32 +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User |
Outlook Express |
+> Active Template Library (ATL) +> Common Control Libraries Version 5 +> Common File Dialogs +> Internet Connection Wizard +> Internet Explorer +> Mapi32 Libraries +> Media Files +> Microsoft Visual C++ Run Time +> Msxml Libraries +> Netshell +> Primitive: Crypt32 +> Primitive: CryptUI +> Primitive: Fixmapi +> Primitive: Mlang +> Primitive: Msasn1 +> Primitive: Msi +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Rasapi32 +> Primitive: Shdocvw +> Primitive: Shell32 +> Primitive: Shlwapi +> Primitive: Shmgrate +> Primitive: Version +> Primitive: Winmm +> Primitive: Wintrust +> Primitive: Wldap32 +> Primitive: Wsock32 +> Protected Storage Service +> Rich Edit Control Version 1.0 +> Urlmon Library +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User +> Wininet Library |
Protected Storage Service |
+> Active Template Library (ATL) +> Microsoft Visual C++ Run Time +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Pstorsvc +> RPC Local Support +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User |
Rich Edit Control Version 1.0 |
+> Rich Edit Control Version 3.0 +> Win32 API - User |
Rich Edit Control Version 3.0 |
+> Microsoft Line Services +> Microsoft Visual C++ Run Time +> Primitive: Ntdll +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User |
Routing Common Files |
+> Microsoft Visual C++ Run Time +> Primitive: Ntdll +> Windows API - Advanced +> Windows API - Kernel +> Windows API - User |
RPC Local Support |
+> Named pipe file system +> Primitive: Ntdll +> Windows API - Advanced +> Windows API - Kernel |
Security Accounts Manager Client |
+> Primitive: Ntdll +> RPC Local Support +> SAM Server +> Windows API - Advanced +> Windows API - Kernel +> Windows API - User |
Service Control Manager (SCM) |
+> Local Security Authority Subsystem (LSASS) +> Microsoft Visual C++ Run Time +> Primitive: Ncobjapi +> Primitive: Ntdll +> Primitive: Umpnpmgr +> Primitive: Userenv +> RPC Local Support +> Windows API - Advanced +> Windows API - Kernel +> Windows API - User +> Windows Security Configuration Editor Engine |
Simple Network Management Protocol (SNMP) |
+> Active Template Library (ATL) +> Common Control Libraries Version 5 +> Event Log +> Microsoft Foundation Class Library (MFC) +> Microsoft Management Console (MMC) +> Microsoft Visual C++ Run Time +> Primitive: Iphlpapi +> Primitive: Netapi32 +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Winspool +> Primitive: Ws2_32 +> Primitive: Wsock32 +> Remote Registry Service +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User |
TCP/IP Version 6 |
+> Ndis +> NDIS Tunnel Miniport Driver +> NetIP6 Inf +> Network Configuration +> Primitive: Ntdll +> Primitive: Ws2_32 +> TCP/IP Networking +> Transport Driver Interface +> Windows API - Kernel +> Windows API – User |
Urlmon Library |
+> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Shlwapi +> Primitive: Version +> RPC Local Support +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User |
Volume Shadow Copy Service |
+> Active Template Library (ATL) +> COM+ Services +> I/O Error Log Messages +> Indexing Service +> Microsoft Visual C++ Run Time +> Msxml 3.1 +> NTFS +> Primitive: Clbcatq +> Primitive: Esent +> Primitive: Netapi32 +> Primitive: Ntdll +> Primitive: Odbc32 +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Setupapi +> Primitive: Shlwapi +> Primitive: Version +> Removable Storage Service +> RPC Local Support +> Standard Template Libraries (STL) +> Windows API - Advanced +> Windows API - Kernel +> Windows API - User |
Windows API - Advanced |
+> Primitive: Ntdll +> RPC Local Support +> Windows API - Kernel +> Windows Subsystem |
Windows API - GDI |
+> Font: Marlett +> Fonts: Fonts Microsoft_San_Serif +> Fonts: Fonts Tahoma +> Fonts: Fonts tahoma_bold +> Fonts: Western Europe font substitute +> Microsoft Visual C++ Run Time +> NLS: Core Files +> Primitive: Dxg +> Primitive: Dxgthk +> Primitive: Mscms +> Primitive: Msimg32 +> Primitive: Ntdll +> Primitive: Version +> Primitive: Winspool +> Windows API - Advanced +> Windows API - Kernel +> Windows API - User +> Windows Subsystem |
Windows API - User |
+> Primitive: Dxapi.sys +> Primitive: Imm32 +> Primitive: Msimg32 +> Primitive: Ntdll +> Primitive: Version +> Primitive: Winsta +> VGA Save +> Windows API - GDI +> Windows API - Kernel +> Windows Subsystem |
Windows Product Activation Notification |
+> Microsoft Visual C++ Run Time +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Shell32 +> Primitive: Shlwapi +> Windows API - Advanced +> Windows API - Kernel +> Windows API - User |
Windows Script Engines |
+> Group: Kernel [Version 5.1.2600.2180, R2890] +> COM Base +> Common Control Libraries Version 5 +> Common File Dialogs +> Microsoft Foundation Class Library (MFC) +> Microsoft Visual C++ Run Time +> Ole Automation +> Primitive: Crypt32 +> Primitive: Imm32 +> Primitive: Mpr +> Primitive: Ntdll +> Primitive: Ole32 +> Primitive: Oleaut32 +> Primitive: Shell32 +> Primitive: Shlwapi +> Primitive: Version +> Primitive: Winspool +> RPC Local Support +> Urlmon Library +> Windows API - Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API - User |
Windows XP Service Pack 2 OOB Resource DLL |
(none) |
Windows XP Service Pack 2 Resource DLL |
+> Windows XP Service Pack 1 Resource DLL |
Wininet Library |
+> Microsoft Visual C++ Run Time +> Primitive: Crypt32 +> Primitive: Ntdll +> Primitive: Oleaut32 +> Primitive: Shlwapi +> Windows API - Advanced +> Windows API - Kernel +> Windows API - User |
Workstation Service |
+> Common File Dialogs +> FBA: Net Common +> Microsoft Visual C++ Run Time +> Primitive: Netapi32 +> Primitive: Netrap +> Primitive: Ntdll +> Primitive: Rdbss +> RPC Local Support +> Security Accounts Manager Client +> SMB Redirector +> Windows API – Advanced +> Windows API - GDI +> Windows API - Kernel +> Windows API – User |
Group: Kernel [Version 5.1.2600.2180, R2890] (Note: This is a dependency group. The individual dependencies are listed in the column to the right) |
+> Disk Management Basic Volume Runtime +> File system recognizer +> NT Hardware Detect +> PnP (Kernel-mode) +> VGA Boot Driver |
Internet Explorer 6 is the component perhaps most significantly re-factored for footprint reduction. Let's examine the key changes to the Internet Explorer 6 component and what other features benefit significantly in footprint reduction from this effort.
Many features in Windows XP Embedded depend on Internet Explorer, including the following:
- .NET Framework 1.1
- Help and Support Services
- HTML Rendering Engine
- IMAPI - CD Burning
- Internet Connection Wizard
- Microsoft Vector Graphics Rendering (VML)
- Outlook Express
- Shell Namespace Extensions
- Soap Client Runtime
- Windows .Net Messenger
- Windows Media Player 10.0
- Windows Media Player 9.0
- Windows Movie Maker
Those features have either a static or delay load dependency on one or more files of the dozens owned by the Internet Explorer 6 component. Those dependent files were removed from the Internet Explorer component and made into their own individual Primitive components. The files removed from Internet Explorer component include the following:
- ACTXPRXY.DLL
- Cryptdlg.dll
- DXTRANS.DLL
- HLINK.DLL
- Iedkcs32.dll
- IEINFO5.OCX
- IEXPLORE.EXE
- IMGUTIL.DLL
- INETCPL.CPL
- INSENG.DLL
- JSPROXY.DLL
- MSHTA.EXE
- MSIDENT.DLL
- MSIDNTLD.DLL
- MSRATING.DLL
Internet Explorer 6 now depends on these new primitives. Other higher-level features such as .NET Framework 1.1 and Help and Support Services now also depend on just a few of these Primitive components instead of on the Internet Explorer 6 component itself. The result is a reduced run-time image footprint. For full Internet Explorer 6 functionality add the Internet Explorer 6 component to your target configuration.
Depending upon the features selected in the target configuration, certain platform build scenarios without a fully functional Internet Explorer 6 feature may achieve a footprint reduction of from 3% to over 50%.
Other key components are re-factored for the benefits of other features, including those in the following table:
Re-factored Component | Beneficiary Components |
---|---|
Volume Shadow Copy |
WMI Core |
Simple Network Management Protocol (SNMP) |
IIS FTP Server, IIS Web Server |
Outlook Express |
Dialer Application, IIS Internet Manager |
Help and Support Services |
Remote Assistance Channel (for SMS Client scenario) |
Administration Support Tools |
Users Control Panel |
The beneficiary components listed above no longer depend on the re-factored components, but instead depend on only a few primitives factored out of the original components.
The procedures and information provided in this white paper can significantly reduce the run-time image footprint when upgrading an existing target device configuration file from Windows XP Embedded Service Pack 2 to Windows XP Embedded Service Pack 2 Feature Pack 2007.