developing xpsdrv print drivers felix maxa software design engineer digital documents platform and...
TRANSCRIPT
Developing XPSDrv Developing XPSDrv Print DriversPrint DriversFelix MaxaFelix MaxaSoftware Design EngineerSoftware Design EngineerDigital Documents Platform and SolutionsDigital Documents Platform and Solutions
Feng YueFeng YueDevelopment LeadDevelopment LeadDigital Documents Platform and SolutionsDigital Documents Platform and Solutions
AgendaAgenda
XPSDrv Filter PipelineXPSDrv Filter Pipeline
XPSDrv ConfigurationXPSDrv ConfigurationGPD/PPD-Only ConfigurationGPD/PPD-Only Configuration
Unidrv/PScript5 Plug-in ConfigurationUnidrv/PScript5 Plug-in Configuration
XPSDrv Setup and InstallationXPSDrv Setup and Installation
XPSDrv Logo RequirementsXPSDrv Logo Requirements
Assumes basic familiarity with XPSDrvAssumes basic familiarity with XPSDrv
XPSDrv OverviewXPSDrv Overview
New print driver model in Window VistaNew print driver model in Window Vista
XPS Document format is the spool fileXPS Document format is the spool fileAdvanced color and graphic supportAdvanced color and graphic support
Application content preserved to driver or deviceApplication content preserved to driver or device
Defines an extensible filter pipelineDefines an extensible filter pipelineConsolidated design for plug-insConsolidated design for plug-ins
Shared common functionalityShared common functionality
Allows flexible allocation of rendering between driver Allows flexible allocation of rendering between driver and device (scalable consumption)and device (scalable consumption)
Compatibility with Win32 and Windows Compatibility with Win32 and Windows Presentation Foundation (WPF) applicationsPresentation Foundation (WPF) applications
XPSDrv Filter PipelineXPSDrv Filter Pipeline
Felix MaxaFelix MaxaSoftware Design EngineerSoftware Design EngineerDigital Documents Platform and SolutionsDigital Documents Platform and Solutions
XPSDrv Filter XPSDrv Filter Pipeline ArchitecturePipeline Architecture
Provided byProvided by
MicrosoftMicrosoft
ISVISV
IHVIHV
SpoolerSpoolerProcessProcess
Version 3Version 3DriverDriver
Win32 App WPF App
ConversionRender Module
Config Module/Plug-in
Filter PipelineFilter Pipeline
Filter 1
Filter N
XPSFilter Pipeline
Manager
FPConfigXML
PropertyBag
Filter Pipeline ProcessFilter Pipeline ProcessApplicationApplication
ProcessProcess
Print PathsPrint Paths
GDI
Print processor
Filter PipelineFilter Pipeline
Filter 1
Filter N
SPOOLFILE
Filter PipelineManager
FPConfigXML
PropertyBag
Printer Driver
Filter Pipeline ProcessFilter Pipeline ProcessSpoolerSpoolerProcessProcess
Provided byProvided by
MicrosoftMicrosoft
ISVISV
IHVIHV
Filter Pipeline ManagerFilter Pipeline Manager
The Filter Pipeline Manager (FPM)The Filter Pipeline Manager (FPM)is responsible foris responsible for
Loading and initializing filters as describedLoading and initializing filters as describedby the filter configuration file to create the by the filter configuration file to create the filter pipelinefilter pipeline
Managing the data between filters as the Managing the data between filters as the print job is processed via the Inter-filter print job is processed via the Inter-filter Communicators (IFC)Communicators (IFC)
Unloading filters when the print job is finishedUnloading filters when the print job is finished
Print Pipeline Filter Print Pipeline Filter Configuration FileConfiguration File
XML file that defines XML file that defines Filter ordering – Simple ordering of Filter ordering – Simple ordering of XML elementsXML elements
Filter interfaces – Defined by XML attributesFilter interfaces – Defined by XML attributes
Input/output formats for each filter – Defined Input/output formats for each filter – Defined by XML elementsby XML elements
Potential for modification by IT Admins to Potential for modification by IT Admins to add filtersadd filters
Be aware of functionality impactBe aware of functionality impact
Pipeline Config File SamplePipeline Config File Sample
<Filters>
<Filter dll = "WdkPipelineFilter.dll" clsid = "{8267d291-6ddd-4972-a94e-3ce88149a1fa}" name = "add simple page"> <Input guid = "{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment = "IID_IXpsDocumentProvider"/> <Output guid = "{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment = "IID_IXpsDocumentConsumer"/>
</Filter>
<FilterServiceProvider dll = "providerA.dll"/><FilterServiceProvider dll = "providerB.dll"/>
</Filters>
Property BagProperty Bag
Sharing data between Sharing data between FiltersFilters
Pipeline manager and filtersPipeline manager and filters
Pairs Pairs (string key, variant value)
ExamplesExamples("PrinterName", VARIANT_BSTR)
("ProgressReport", VARIANT_IUNKNOWN)
("PrinterHandle", VARIANT_BYREF)
("UserSecurityToken", VARIANT_BYREF)
("PrintJobId", VARIANT_ULONG)
Filter Access To XPS JobFilter Access To XPS Job
StreamStream
XPS high level interfacesXPS high level interfaces[0].piece FONT-1 Resources\99bc59ed.ODTTF\[0].piece IMAGE-1 Resources\8792381d.jpg\[1].last.piece IMAGE-1 Resources\8792381d.jpg\[0].piece FONT-2 Resources\6b2554d5.ODTFF\[1].last.piece FONT-2 Resources\6b2554d5.ODTFF\[0].piece IMAGE-2 Resources\42a30e86.jpg\[1].last.piece IMAGE-2 Resources\42a30e86.jpg\[0].last.piece PT-1 Metadata\Job_PT.xml\[0].piece FDS FixedDocumentSequence.fdseq\[1].piece FDS FixedDocumentSequence.fdseq\[2].last.piece FDS FixedDocumentSequence.fdseq\[0].piece FP Documents\1\Pages\3.fpage[1].last.piece FP Documents\1\Pages\3.fpage
XPSSPOOL
FILE
S
D D
P P P
S
D
D
P
P
P
FILTER
S
D
P
PFILTER
SerializeFlatten
XPS
Back tospooler
IXpsDocumentConsumer
IXpsDocumentProvider
Property Bag
IPrintPipelinePropertyBag MS Pipeline component
ISV / IHV filter
P XPS Part / interface
XPS Filter PipelineXPS Filter Pipeline
XPS Filter Pipeline NotificationsXPS Filter Pipeline Notifications
S
D
P
PXPS
FILTER
SerializeFlatten
XPS
Back tospooler
Get & Delete property
MS Pipeline component
ISV / IHV filter
P XPS Part / interface
Property bag
XPS_FP_PROGRESS_REPORTIPrintPipelineProgressReport
XPS_FP_PRINTER_NAMEstring
XPS Render Filter NotificationsXPS Render Filter Notifications
MS Pipeline component
ISV / IHV filter
P XPS Part / interfaceGet & Delete property
S
D
P
P
XPSto
PDLFILTER
Back tospooler
StreamBuffer
IPrintWriteStream
Property bag
XPS_FP_PROGRESS_REPORTIPrintPipelineProgressReport
XPS_FP_PRINTER_NAMEstring
XPS Document Filter InterfacesXPS Document Filter Interfaces
Filters canFilters canRead and write Page markupRead and write Page markup
Read content for other partsRead content for other parts
Create new parts and associate with pagesCreate new parts and associate with pages
Create new documents and pagesCreate new documents and pages
Delete relationshipsDelete relationships
Enumerate resources for pageEnumerate resources for page
Mix of XPS and Stream based filtersMix of XPS and Stream based filtersThe filter pipeline manager takes careThe filter pipeline manager takes careof data conversionof data conversion
The Filter Interface DefinitionThe Filter Interface Definition
interface IPrintPipelineFilter : IUnknown{ HRESULT InitializeFilter( [in] IInterFilterCommunicator *pICommunicator, [in] IPrintPipelinePropertyBag *pIPropertyBag, [in] IPrintPipelineManagerControl *pIPipelineControl );
HRESULT ShutdownOperation( void );
HRESULT StartOperation( void );}
Custom Filter InterfacesCustom Filter Interfaces
<Filters> <Filter dll = "CustomFilterA.dll" clsid = "{33b32cf3-954c-4dfd-a016-6f05303fe65b}" name = "read stream - write custom"> <Input guid = "{4d47a67c-66cc-4430-850e-daf466fe5bc4}" comment = "IID_IPrintReadStream"/> <<OOutput guid = "{00000003-0000-0000-C000-000000000046}" utput guid = "{00000003-0000-0000-C000-000000000046}" provider = "{a6686ae8-909f-42ee-9377-6fc6c815df61}" provider = "{a6686ae8-909f-42ee-9377-6fc6c815df61}" dll = dll = ""CCustustIInterfacenterfaceProviderProvider.dll".dll"/>
</Filter>
<Filter dll = "CustomFilterB.dll" clsid = "{f761761d-5467-409a-adff-91460ba008d9}" name = "read custom - write stream"> <<IInput guid = "{00000003-0000-0000-C000-000000000046}"nput guid = "{00000003-0000-0000-C000-000000000046}"/> <Output guid = "{65bb7f1b-371e-4571-8ac7-912f510c1a38}" comment = "IID_IPrintWriteStream"/>
</Filter></Filters>
Custom Filter InterfacesCustom Filter Interfaces
MS Pipeline component
ISV / IHV filter
P XPS Part / interface
FilterA IUnknown
FilterB
Provider
XPSor
Stream
XPSor
Stream
Filter Service ProvidersFilter Service Providers
Module which exportsModule which exports
HRESULTDrvPopulateFilterServices( __in IPrintPipelinePropertyBag *pPropertyBag );
Registered in the pipeline configRegistered in the pipeline config
<FilterServiceProvider dll = “providerA.dll”/>
Access to configuration module functionalityAccess to configuration module functionalityand data from filtersand data from filters
Ex. IPrintCoreHelperEx. IPrintCoreHelper
InterleavingInterleaving
Page level interleavingPage level interleavingResources firstResources first
Mark up firstMark up first
Interleaved at certain piece sizeInterleaved at certain piece size
For some devices, filter must helpFor some devices, filter must helpEnsure resources are available when neededEnsure resources are available when needed
Enables consumption by memory Enables consumption by memory constrained consumersconstrained consumers
Use discard controlUse discard control
Send resources againSend resources again
Interleaving In Config FileInterleaving In Config File
<Filter dll = "TestFilter.dll" clsid = "{e96f780a-5b6a-47d5-a433-fa0d4e52688d}" <Input guid = "{b8cf8530-5562-47c4-ab67-b1f69ecf961e}"/> <Output guid = "{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}"/>
<Interleaving mode="Markup<Interleaving mode="MarkupFFirst" pieceSize="0"/>irst" pieceSize="0"/> <Interleaving mode="Markup<Interleaving mode="MarkupFFirst" pieceSize="2000"/>irst" pieceSize="2000"/> <Interleaving mode="Resources<Interleaving mode="ResourcesFFirst" pieceSize="30900"/>irst" pieceSize="30900"/> <Interleaving mode="Markup<Interleaving mode="MarkupFFirst"/>irst"/> <Interleaving mode="Resources<Interleaving mode="ResourcesFFirst"/>irst"/></Filter>
Filter RecommendationsFilter Recommendations
Filters should not spawn separate Filters should not spawn separate processes or threadsprocesses or threads
If a separate process/thread is required forIf a separate process/thread is required fora filter, the filter MUST properly manage the a filter, the filter MUST properly manage the process/thread lifetimeprocess/thread lifetime
Stream filters – aware that not all dataStream filters – aware that not all datais correctly interleavedis correctly interleaved
Filters must be robust to non-interleavedFilters must be robust to non-interleavedand incorrectly interleaved contentand incorrectly interleaved content
COM apartment modelCOM apartment model
Driver packages – XML file changesDriver packages – XML file changesPnPUtil.exePnPUtil.exe
Debug helpDebug help
System\CurrentControlSet\Control\Print
PipelineHostTimeout REG_DWORD miliseconds
PipelineDebugLog REG_DWORD 0 or non-0
Common Implementation Common Implementation ChallengesChallenges
XPSDrv ConfigurationXPSDrv Configuration
Feng YueFeng YueDevelopment LeadDevelopment LeadDigital Documents Platform and SolutionsDigital Documents Platform and Solutions
XPSDrv Configuration XPSDrv Configuration ArchitectureArchitecture
Version 3 DriverVersion 3 Driver
Win32 App WPF App
ConversionRender Module
Filter PipelineFilter Pipeline
Filter 1
Filter N
XPS
Unidrv Plug-inGPD Unidrv ConfigModule
PScript5 Plug-inPPD PScript5 ConfigModule
MonolithicConfig Module Config ModuleConfig Module
XPSDrv DriverXPSDrv Driver
Provided byProvided by
MicrosoftMicrosoft
ISVISV
IHVIHV
GPD/PPD-Only ConfigGPD/PPD-Only Config
GPD/PPD-only configuration is supported GPD/PPD-only configuration is supported for XPSDrv printer driversfor XPSDrv printer drivers
Smallest investment cost and short Smallest investment cost and short development timedevelopment timeNo customization of Unidrv/PScript5 behaviorNo customization of Unidrv/PScript5 behaviorNo UI customizationNo UI customization
Best suited for XPSDrv passthrough or Best suited for XPSDrv passthrough or basic printer driversbasic printer driversPrimary changes arePrimary changes are
Print Schema Mapping Print Schema Mapping XPSDrv Specific GPD/PPD EntriesXPSDrv Specific GPD/PPD Entries
GPD/PPD To Print Schema MapGPD/PPD To Print Schema Map
Standard GPD/PPD keywords Standard GPD/PPD keywords automatically mapped to public Print automatically mapped to public Print Schema equivalentsSchema equivalents
Non-standard keywords automatically Non-standard keywords automatically mapped to private device namespacemapped to private device namespace
Example:*Feature: PaperSize -><psf:Feature name=“psk:PageMediaSize”>
Example:*Feature: IHVFoo -> <psf:Feature name=“ns0001:IHVFoo”>
GPD/PPD To Print Schema MapGPD/PPD To Print Schema Map
Windows Vista GPD/PPD parsers will recognize Windows Vista GPD/PPD parsers will recognize new Print Schema mapping keywordsnew Print Schema mapping keywords
Specify IHV private namespace for automatically Specify IHV private namespace for automatically mapped keywordmapped keyword
Specify mapping from non-standard keywords to Print Specify mapping from non-standard keywords to Print Schema equivalentsSchema equivalents
GPD KeywordsGPD KeywordsPrintSchemaPrivateNamespaceURIPrintSchemaPrivateNamespaceURI
PrintSchemaKeywordMapPrintSchemaKeywordMap
PPD KeywordsPPD KeywordsMSPrintSchemaPrivateNamespaceURIMSPrintSchemaPrivateNamespaceURI
MSPrintSchemaKeywordMapMSPrintSchemaKeywordMap
New “Include” entry to reference XPSDrv New “Include” entry to reference XPSDrv standard contentsstandard contents
msxpsinc.gpdmsxpsinc.ppd
Currently files include a new keyword to Currently files include a new keyword to specify XPSDrv printer driverspecify XPSDrv printer driver
*IsXPSDriver?: TRUE*IsXPSDriver?: TRUE (msxpsinc.gpd)
*MSIsXPSDriver?: TRUE*MSIsXPSDriver?: TRUE (msxpsinc.ppd)
Keyword must be present to properly recognize Keyword must be present to properly recognize XPSDrv driversXPSDrv drivers
GPD/PPD XPSDrv EntriesGPD/PPD XPSDrv Entries
GPD Sample FileGPD Sample File*GPDFileVersion: "1.0"*Include: "StdNames.gpd”*Include: “MSXpsInc.gpd”“MSXpsInc.gpd”
*%*% IHV Private Namespace*%*PrintSchemaPrivateNamespaceURI*PrintSchemaPrivateNamespaceURI:“http://www.ihv.com/schema/2006”*%*% IHV Private Feature*%*Feature: IHVStapling {
*PrintSchemaKeywordMap*PrintSchemaKeywordMap: “JobStaple"*Option: Enabled {
*PrintSchemaKeywordMap*PrintSchemaKeywordMap: “StapleTopLeft" }*Option: Disabled {
*PrintSchemaKeywordMap*PrintSchemaKeywordMap: “None” }}
Unidrv/PScript5 Plug-In ConfigUnidrv/PScript5 Plug-In Config
Unidrv/PScript5 Plug-in allows full customization Unidrv/PScript5 Plug-in allows full customization of config moduleof config module
Ability to modify, replace and add to system Ability to modify, replace and add to system PrintTicket/PrintCapabilities (PT/PC) processingPrintTicket/PrintCapabilities (PT/PC) processingAbility to fully replace system UIAbility to fully replace system UINon-trivial investment cost and development timeNon-trivial investment cost and development time
Suited for all types of XPSDrv driversSuited for all types of XPSDrv driversPrimary changes arePrimary changes are
Plug-in PT/PC provider: IPrintOemPrintTicketProviderPlug-in PT/PC provider: IPrintOemPrintTicketProviderHelper interface for Unidrv/PScript5 settings: Helper interface for Unidrv/PScript5 settings: IPrintCoreHelperIPrintCoreHelperXPSDrv document events and communicating XPSDrv document events and communicating with filterswith filters
IPrintOemPrintTicketProviderIPrintOemPrintTicketProvider
Enables plug-ins to customize PT/PC processingEnables plug-ins to customize PT/PC processingResults of Unidrv/PScript5 processing will be passed to plug-in to Results of Unidrv/PScript5 processing will be passed to plug-in to finalize processing finalize processing
DECLARE_INTERFACE_(IPrintOemPrintTicketProvider, IUnknown)
{STDMETHOD(GetSupportedVersionsGetSupportedVersions)(…)STDMETHOD(BindPrinterBindPrinter)(…)STDMETHOD(PublishPrintTicketHelperInterfacePublishPrintTicketHelperInterface)(…)STDMETHOD(QueryDeviceDefaultNamespaceQueryDeviceDefaultNamespace)(…)STDMETHOD(ConvertPrintTicketToDevModeConvertPrintTicketToDevMode)(…)STDMETHOD(ConvertDevModeToPrintTicketConvertDevModeToPrintTicket)(…)STDMETHOD(CompletePrintCapabilitiesCompletePrintCapabilities)(…)STDMETHOD(ExpandIntentOptionsExpandIntentOptions)(…)STDMETHOD(ValidatePrintTicketValidatePrintTicket)(…)
};
IPrintCoreHelperIPrintCoreHelper
COM interface that enables plug-ins to read and set the COM interface that enables plug-ins to read and set the Unidrv and PScript5 private DEVMODE settingsUnidrv and PScript5 private DEVMODE settings
Enables functional parity for full-UI replacementEnables functional parity for full-UI replacement
DECLARE_INTERFACE_(IPrintCoreHelper, IUnknown){
// IUnknown methods skippedSTDMETHOD(CreateInstanceOfMSXMLObjectCreateInstanceOfMSXMLObject)(…)STDMETHOD(EnumConstrainedOptionsEnumConstrainedOptions)(…)STDMETHOD(EnumFeaturesEnumFeatures)(…)STDMETHOD(EnumOptionsEnumOptions)(…)STDMETHOD(GetOptionGetOption)(…)STDMETHOD(SetOptionsSetOptions)(…)STDMETHOD(WhyConstrainedWhyConstrained)(…)STDMETHOD(GetFontSubstitutionGetFontSubstitution)(…)STDMETHOD(SetFontSubstitutionSetFontSubstitution)(…)
};
IPrintCoreHelperIPrintCoreHelper
Two derived interfaces provide Unidrv and PScript5 Two derived interfaces provide Unidrv and PScript5 specific functionalityspecific functionality
DECLARE_INTERFACE_(IPrintCoreHelperUni, IPrintCoreHelper){
STDMETHOD(CreateDefaultGDLSnapshotCreateDefaultGDLSnapshot)(…)STDMETHOD(CreateGDLSnapshotCreateGDLSnapshot)(…)
};
DECLARE_INTERFACE_(IPrintCoreHelperPS, IPrintCoreHelper){
STDMETHOD(GetGlobalAttributeGetGlobalAttribute)(…)STDMETHOD(GetFeatureAttributeGetFeatureAttribute)(…)STDMETHOD(GetOptionAttributeGetOptionAttribute)(…)
};
XPSDrv Document EventsXPSDrv Document Events
XPSDrv will use the existing XPSDrv will use the existing DrvDocumentEvent mechanismDrvDocumentEvent mechanism
When printing from Win32 apps, existing GDI events When printing from Win32 apps, existing GDI events will be usedwill be usedWhen printing from WPF apps,When printing from WPF apps,the following new XPS events will be usedthe following new XPS events will be used
DOCUMENTEVENT_XPS_QUERYFILTERDOCUMENTEVENT_XPS_ADDFIXEDDOCUMENTSEQUENCEPRE/POSTDOCUMENTEVENT_XPS_ADDFIXEDDOCUMENTPRE/POSTDOCUMENTEVENT_XPS_ADDFIXEDPAGEEPRE/POSTDOCUMENTEVENT_XPS_ADDFIXEDDOCUMENTSEQUENCEPRINTTICKETPR
E/POSTDOCUMENTEVENT_XPS_ADDFIXEDDOCUMENTPRINTTICKETPRE/POSTDOCUMENTEVENT_XPS_ADDFIXEDPAGEPRINTTICKETPRE/POSTDOCUMENTEVENT_XPS_CANCELJOB
Configuration RecommendationsConfiguration Recommendations
For Unidrv/PScript5 drivers, provide For Unidrv/PScript5 drivers, provide separate GPD/PPD for each filterseparate GPD/PPD for each filter
Contributes to the modularity of filtersContributes to the modularity of filters
Expose PT/PC keywords in the public Expose PT/PC keywords in the public Print SchemaPrint Schema
Where possible, map driver features to public Where possible, map driver features to public Print Schema keywordsPrint Schema keywords
Contributes to application use of featuresContributes to application use of features
Contributes to better synchronization of Contributes to better synchronization of driver and application settingsdriver and application settings
INF ChangesINF Changes
XPSDrv drivers need to make a series of XPSDrv drivers need to make a series of changes to be properly registered by changes to be properly registered by the spoolerthe spooler
CopyFilesCopyFilesMust include Filter Pipeline configuration fileMust include Filter Pipeline configuration file
NeedsNeedsMust include XPSDRV.OEM install directiveMust include XPSDRV.OEM install directive
Unidrv/PScript5 drivers must include Unidrv/PScript5 drivers must include XPSGPD.OEM or XPSPPD.OEM XPSGPD.OEM or XPSPPD.OEM install directivesinstall directives
INF File SampleINF File Sample
[Manufacturer]Microsoft
[Microsoft]"XPSDrv Sample Driver" = INSTALL_XDSMPL_FILTERS
[INSTALL_XDSMPL_FILTERS]CopyFiles=XPSDrvSampleXPSDrvSample,ConfigPlugin,COLORPROFILESDataFile=XDSmpl.GPDInclude=NTPRINT.INFNeeds=UNIDRV.OEM, XPSGPD.OEM, XPSDRV.OEMNeeds=UNIDRV.OEM, XPSGPD.OEM, XPSDRV.OEMICMProfiles=xdwscRGB.cdmp
[XPSDrvSample]xdsmpl-pipelineconfig.xmlxdsmpl-pipelineconfig.xml
...
Premium Logo RequirementPremium Logo Requirement
XPSDrv implementation is a requirement XPSDrv implementation is a requirement for the Premium Logo for print and for the Premium Logo for print and multi-function devicesmulti-function devices
See DEV-PRNT-56 in the See DEV-PRNT-56 in the Windows Logo Program Windows Logo Program requirements for more informationrequirements for more information
Configuration ModuleConfiguration ModuleLogo RequirementsLogo Requirements
Must be a valid Version 3 printer driver Must be a valid Version 3 printer driver configuration moduleconfiguration module
Must support PrintTicket and Must support PrintTicket and PrintCapabilitiesPrintCapabilities
All features configurable in the driver UIAll features configurable in the driver UI
Minimal set keywords are required for Minimal set keywords are required for basic functionalitybasic functionality
Filter Pipeline Filter Pipeline Logo RequirementsLogo Requirements
The XPSDrv driver The XPSDrv driver mustmust include a valid Filter include a valid Filter Pipeline Configuration FilePipeline Configuration File
Filters Filters mustmust conform to the rendering rules and conform to the rendering rules and PrintTicket processing rules defined in the XML PrintTicket processing rules defined in the XML Paper SpecificationPaper Specification
Filters Filters must notmust not have a dependency on the CLR have a dependency on the CLR or the WinFX Runtime Componentsor the WinFX Runtime Components
Filters in the XPSDrv driver filter pipeline Filters in the XPSDrv driver filter pipeline must must notnot display User Interface (UI) content display User Interface (UI) content
Call To ActionCall To Action
Test for compatibility now!Test for compatibility now!Test the GDI Print Path, XPS Print Path, and Test the GDI Print Path, XPS Print Path, and compatibility print pathscompatibility print paths
Report problems immediatelyReport problems immediately
Plan for XPSDrv supportPlan for XPSDrv supportHost-based printersHost-based printers
Pass-through XPSDrv drivers for Pass-through XPSDrv drivers for XPS-capable devices (direct consumption)XPS-capable devices (direct consumption)
Start implementation nowStart implementation nowAim for Windows Vista launch availabilityAim for Windows Vista launch availability
Call To ActionCall To Action
Review the Windows Vista Logo Program requirementsReview the Windows Vista Logo Program requirementsBasic and PremiumBasic and Premium
At WinHECAt WinHECPractice driver dev and testing skills in XPS Printing hands Practice driver dev and testing skills in XPS Printing hands on labson labs
Ask the Experts at lunch todayAsk the Experts at lunch today
Visit the Microsoft Pavilion to see XPS demos Visit the Microsoft Pavilion to see XPS demos
Read XPSDrv Print Drivers and the Windows Color System on Read XPSDrv Print Drivers and the Windows Color System on http://www.microsoft.com/whdc/device/print/default.mspxhttp://www.microsoft.com/whdc/device/print/default.mspx
Attend related sessionsAttend related sessionsPRI050 Inside Printer Installation on Windows VistaPRI050 Inside Printer Installation on Windows Vista
PRI039 Using the Windows Color System in Device DriversPRI039 Using the Windows Color System in Device Drivers
PRI102 Using XPSDrv Print Drivers to Extend Windows PRI102 Using XPSDrv Print Drivers to Extend Windows Print FunctionalityPrint Functionality
PRI077 Print Driver and XPSDrv Testing in Windows VistaPRI077 Print Driver and XPSDrv Testing in Windows Vista
Additional ResourcesAdditional Resources
Technical adviceTechnical advice
WDK and SDKWDK and SDK
OnlineOnlineXPS Portal XPS Portal http://www.microsoft.com/http://www.microsoft.com/xpsxps
Links to relevant blogs, whitepapers, specs Links to relevant blogs, whitepapers, specs
WHDC Printing documents WHDC Printing documents http://www.microsoft.com/whdc/device/print/default.mspxhttp://www.microsoft.com/whdc/device/print/default.mspx
WHDC Color documentsWHDC Color documentshttp://www.microsoft.com/whdc/device/display/color/default.mspxhttp://www.microsoft.com/whdc/device/display/color/default.mspx
Windows Digital Documents Platform Team Newsletter Windows Digital Documents Platform Team Newsletter https://profile.microsoft.com/RegSysProfileCenter/subscriptionwizard.aspxhttps://profile.microsoft.com/RegSysProfileCenter/subscriptionwizard.aspx?wizid=77d9786e-9500-40a4-ba20-a4c7504d83ca&lcid=1033?wizid=77d9786e-9500-40a4-ba20-a4c7504d83ca&lcid=1033
XPSinfo @ microsoft.com XPSinfo @ microsoft.com
Prninfo @ microsoft.com Prninfo @ microsoft.com
Mscolor @ microsoft.comMscolor @ microsoft.com
© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions,
it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.