Moduli di configurazione plug-in Unidrv/PScript5
Importante
La piattaforma di stampa moderna è il mezzo preferito di Windows per comunicare con le stampanti. Ti consigliamo di usare il driver di classe IPP di Microsoft, insieme a Print Support Apps (PSA), per personalizzare l'esperienza di stampa in Windows 10 e 11 per lo sviluppo di dispositivi per stampanti.
Per altre informazioni, vedere Piattaforma di stampa moderna e guida alla progettazione dell'app di supporto per la stampa.
I moduli di configurazione del driver di stampa XPSDrv che usano plug-in di configurazione Unidrv o PScript5 in Windows Vista supportano le nuove funzionalità seguenti:
Funzionalità PrintTicket e PrintCapabilities
Interfaccia IPrintCoreHelper per la modifica delle impostazioni Unidrv e PScript5
Eventi di XPSDrv Document
Comunicazione con i filtri driver di stampa nella pipeline di filtro
Supporto dell'interfaccia PrintTicket e PrintCapabilities
I plug-in del driver di stampa Unidrv e PScript5 implementano l'interfaccia IPrintOemPrintTicketProvider per personalizzare i dati PrintTicket e PrintCapabilities. I metodi in questa interfaccia consentono a un plug-in di personalizzare l'elaborazione PrintTicket e PrintCapabilities per le funzionalità personalizzate fornite dal plug-in.
I driver di stampa Unidrv e PScript5 implementano l'interfaccia IPrintTicketProvider e generano la versione iniziale dei dati PrintTicket e PrintCapabilities basati sul file GPD o PPD. Dopo l'elaborazione iniziale, il driver di stampa Unidrv o PScript5 chiama quindi l'interfaccia IPrintOemPrintTicketProvider del plug-in in in modo che il plug-in possa modificare questi dati prima che il driver di stampa lo restituisca all'applicazione chiamante.
Interfaccia IPrintCoreHelper
L'interfaccia IPrintCoreHelper consente al plug-in di configurazione del driver di stampa di:
Ottiene e imposta i valori nella parte privata della struttura DEVMODE usata dai driver di stampa Unidrv e PScript5.
Enumerare le funzionalità, le opzioni e i vincoli dei driver di stampa.
Accedere al contenuto completo del file GPD o parziale ppd.
L'unico modo per impostare correttamente la configurazione Unidrv o PScript5 per un plug-in e abilitare la funzionalità di sostituzione completa dell'interfaccia utente consiste nell'usare l'interfaccia IPrintCoreHelper seguente.
DECLARE_INTERFACE_(IPrintCoreHelper, IUnknown) {
// IUnknown methods skipped
STDMETHOD(CreateInstanceOfMSXMLObject)(...)
STDMETHOD(EnumConstrainedOptions)(...)
STDMETHOD(EnumFeatures)(...)
STDMETHOD(EnumOptions)(...)
STDMETHOD(GetOption)(...)
STDMETHOD(SetOptions)(...)
STDMETHOD(WhyConstrained)(...)
};
Le due interfacce aggiuntive seguenti, IPrintCoreHelperUni e IPrintCoreHelperPS, derivano dall'interfaccia IPrintCoreHelper. Queste interfacce sono specifiche dei driver di stampa Unidrv e PScript5, rispettivamente e includono metodi aggiuntivi univoci per ogni 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)(...)
};
L'esempio di codice seguente illustra come usare l'interfaccia IPrintCoreHelper per eseguire query sulle informazioni dalla struttura DEVMODE. Questo esempio fa parte del codice di esempio del driver di stampa XPSDrv in Windows Driver Kit (WDK).
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;
}