Модули конфигурации подключаемых модулей Unidrv/PScript5
Внимание
Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.
Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.
Модули конфигурации драйвера печати XPSDrv, использующие подключаемые модули конфигурации Unidrv или PScript5 в Windows Vista, поддерживают следующие новые возможности:
Функции PrintTicket и PrintCapabilities
Интерфейс IPrintCoreHelper для управления параметрами Unidrv и PScript5
События документа XPSDrv
Взаимодействие с фильтрами драйверов печати в конвейере фильтров фильтра
Поддержка интерфейса PrintTicket и PrintCapabilities
Подключаемые модули драйвера печати Unidrv и PScript5 реализуют интерфейс IPrintOemPrintTicketProvider для настройки данных PrintTicket и PrintCapabilities. Методы в этом интерфейсе позволяют подключаемым модулем настраивать обработку PrintTicket и PrintCapabilities для пользовательских функций, предоставляемых подключаемым модулем.
Драйверы печати Unidrv и PScript5 реализуют интерфейс IPrintTicketProvider и создают начальную версию данных PrintTicket и PrintCapabilities, основанных на файле GPD или PPD. После первоначальной обработки драйвер печати Unidrv или PScript5 вызывает интерфейс IPrintOemPrintTicvider подключаемого модуля, чтобы подключаемый модуль смог изменить эти данные, прежде чем драйвер печати возвращает его вызывающему приложению.
Интерфейс IPrintCoreHelper
Интерфейс IPrintCoreHelper позволяет подключаемый модуль конфигурации драйвера печати:
Получение и установка значений в частной части структуры DEVMODE, используемой драйверами печати Unidrv и PScript5.
Перечисление функций драйвера печати, параметров и ограничений.
Доступ к полному содержимому GPD или частичному содержимому PPD-файла.
Единственным способом правильного задания конфигурации Unidrv или PScript5 для подключаемого модуля является возможность полной замены пользовательского интерфейса (UI) с помощью следующего интерфейса IPrintCoreHelper .
DECLARE_INTERFACE_(IPrintCoreHelper, IUnknown) {
// IUnknown methods skipped
STDMETHOD(CreateInstanceOfMSXMLObject)(...)
STDMETHOD(EnumConstrainedOptions)(...)
STDMETHOD(EnumFeatures)(...)
STDMETHOD(EnumOptions)(...)
STDMETHOD(GetOption)(...)
STDMETHOD(SetOptions)(...)
STDMETHOD(WhyConstrained)(...)
};
Следующие два дополнительных интерфейса, IPrintCoreHelperUni и IPrintCoreHelperPS, являются производными от интерфейса IPrintCoreHelper. Эти интерфейсы относятся к драйверам печати Unidrv и PScript5 соответственно и включают дополнительные методы, уникальные для каждого драйвера.
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)(...)
};
В следующем примере кода показано, как использовать интерфейс IPrintCoreHelper для запроса сведений из структуры DEVMODE. Этот пример является частью примера кода драйвера печати XPSDrv в комплекте драйверов Windows (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;
}