Módulos de configuração de plug-in Unidrv/PScript5
Importante
A plataforma de impressão moderna é o meio preferencial do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.
Para obter mais informações, consulte Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.
Os módulos de configuração do driver de impressão XPSDrv que usam plug-ins de configuração Unidrv ou PScript5 no Windows Vista oferecem suporte aos seguintes novos recursos:
Os recursos PrintTicket e PrintCapabilities
A interface IPrintCoreHelper para manipular as configurações Unidrv e PScript5
Eventos de documento XPSDrv
Comunicação com filtros de driver de impressão no pipeline de filtro
Suporte à interface PrintTicket e PrintCapabilities
Os plug-ins de driver de impressão Unidrv e PScript5 implementam a interface IPrintOemPrintTicketProvider para personalizar os dados PrintTicket e PrintCapabilities. Os métodos nessa interface permitem que um plug-in personalize o processamento de PrintTicket e PrintCapabilities para os recursos personalizados que o plug-in fornece.
Os drivers de impressão Unidrv e PScript5 implementam a interface IPrintTicketProvider e geram a versão inicial dos dados PrintTicket e PrintCapabilities com base no arquivo GPD ou PPD. Após o processamento inicial, o driver de impressão Unidrv ou PScript5 chama a interface IPrintOemPrintTicketProvider do plug-in para que o plug-in possa modificar esses dados antes que o driver de impressão os retorne ao aplicativo de chamada.
Interface IPrintCoreHelper
A interface IPrintCoreHelper permite que o plug-in de configuração do driver de impressão:
Obtenha e defina valores na parte privada da estrutura DEVMODE que os drivers de impressão Unidrv e PScript5 usam.
Enumere recursos, opções e restrições do driver de impressão.
Acesse o conteúdo completo do arquivo GPD ou PPD parcial.
A única maneira de um plug-in definir corretamente a configuração Unidrv ou PScript5 e habilitar a funcionalidade de substituição completa da interface do usuário é usando a interface IPrintCoreHelper a seguir.
DECLARE_INTERFACE_(IPrintCoreHelper, IUnknown) {
// IUnknown methods skipped
STDMETHOD(CreateInstanceOfMSXMLObject)(...)
STDMETHOD(EnumConstrainedOptions)(...)
STDMETHOD(EnumFeatures)(...)
STDMETHOD(EnumOptions)(...)
STDMETHOD(GetOption)(...)
STDMETHOD(SetOptions)(...)
STDMETHOD(WhyConstrained)(...)
};
As duas interfaces adicionais a seguir, IPrintCoreHelperUni e IPrintCoreHelperPS, são derivadas da interface IPrintCoreHelper. Essas interfaces são específicas para drivers de impressão Unidrv e PScript5, respectivamente, e incluem métodos adicionais exclusivos para cada driver.
DECLARE_INTERFACE_(IPrintCoreHelperUni, IUnknown) {
// IUnknown methods skipped
// IPrintCoreHelper methods skipped
STDMETHOD(CreateDefaultGDLSnapshot)(...)
STDMETHOD(CreateGDLSnapshot)(...)
};
DECLARE_INTERFACE_(IPrintCoreHelperPS, IUnknown) {
// IUnknown methods skipped
// IPrintCoreHelper methods skipped
STDMETHOD(GetFeatureAttribute)(...)
STDMETHOD(GetGlobalAttribute)(...)
STDMETHOD(GetOptionAttribute)(...)
};
O exemplo de código a seguir ilustra como você pode usar a interface IPrintCoreHelper para consultar informações da estrutura DEVMODE. Este exemplo faz parte do código de exemplo do driver de impressão XPSDrv no WDK (Windows Driver Kit).
HRESULT
CBookletDMPTConv::GetDrvSettingsFromDM(
__in PDEVMODE pDevmode,
ULONG cbDevmode,
__out GPD::Binding::DrvSettings* pDrvSettings
)
{
HRESULT hr = S_OK;
for (GPD::Binding::EGPDSettings setting =
GPD::Binding::EGPDSettingsMin;
setting < GPD::Binding::EGPDSettingsMax && SUCCEEDED(hr);
setting++)
{
PCSTR pszOption;
hr = m_pCoreHelper->GetOption(
pDevmode,
cbDevmode,
m_featureNames[setting],
&pszOption)
if (SUCCEEDED(hr))
{
hr = GPDSettingFromOptionString(
pszOption,
setting,
pDrvSettings);
}
}
return hr;
}