developing xpsdrv print drivers felix maxa software design engineer digital documents platform and...

50
Developing XPSDrv Developing XPSDrv Print Drivers Print Drivers Felix Maxa Felix Maxa Software Design Engineer Software Design Engineer Digital Documents Platform and Digital Documents Platform and Solutions Solutions Feng Yue Feng Yue Development Lead Development Lead Digital Documents Platform and Digital Documents Platform and Solutions Solutions

Upload: gilbert-patrick

Post on 15-Jan-2016

298 views

Category:

Documents


14 download

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 GPD/PPD-Only ConfigurationConfiguration

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 Unidrv/PScript5 Plug-In ConfigurationPlug-In Configuration

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

Setup And InstallationSetup And Installation

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

...

Windows Logo Windows Logo Program RequirementsProgram Requirements

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.