|
|
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright 2001 - 2003 Microsoft Corporation. All Rights Reserved.
//
// FILE: Helper.h
//
//
// PURPOSE: Defines wrapper class for Driver UI Helper Interface.
//
//
// PLATFORMS:
// Windows 2000, Windows XP, Windows Server 2003
//
//
#ifndef _HELPER_H
#define _HELPER_H
#include "precomp.h"
class CUIHelper { private: IUnknown *m_pUIHelper; // pointer to Driver UI's Helper interface
IID m_iidUIHelper; // Driver UI's Helper interface IID
public: CUIHelper(); CUIHelper(const IID &HelperIID, PVOID pHelper); virtual ~CUIHelper();
inline BOOL IsValid() {return NULL != m_pUIHelper;}
void Assign(const IID &HelperIID, PVOID pHelper); ULONG Release();
//
// IPrintOemDriverUI methods
//
//
// Helper function to get driver settings. This function is only supported
// for UI plugins that do not fully replace core driver's standard UI.
//
STDMETHOD(DrvGetDriverSetting) (THIS_ PVOID pci, PCSTR Feature, PVOID pOutput, DWORD cbSize, PDWORD pcbNeeded, PDWORD pdwOptionsReturned );
//
// Helper function to allow OEM plugins upgrade private registry
// settings. This function is supported for any UI plugins and should be
// called only by OEM's UpgradePrinter.
//
STDMETHOD(DrvUpgradeRegistrySetting) (THIS_ HANDLE hPrinter, PCSTR pFeature, PCSTR pOption );
//
// Helper function to allow OEM plugins to update the driver UI settings.
// This function is only supported for UI plugins that do not fully replace
// core driver's standard UI. It should be called only when the UI is present.
//
STDMETHOD(DrvUpdateUISetting) (THIS_ PVOID pci, PVOID pOptItem, DWORD dwPreviousSelection, DWORD dwMode );
//
// IPrintCoreUI2 new methods
//
//
// Following four helper functions are only supported for UI plugins that fully
// replace core driver's standard UI. They should only be called by the UI plugin's
// DocumentPropertySheets, DevicePropertySheets and their property sheet callback
// functions.
//
// Helper function to retrieve driver's current setting as a list of
// feature/option keyword pairs.
//
STDMETHOD(GetOptions) (THIS_ IN POEMUIOBJ poemuiobj, IN DWORD dwFlags, IN PCSTR pmszFeaturesRequested, IN DWORD cbIn, OUT PSTR pmszFeatureOptionBuf, IN DWORD cbSize, OUT PDWORD pcbNeeded);
//
// Helper function to change driver's setting using a list of feature/option
// keyword pairs.
//
STDMETHOD(SetOptions) (THIS_ IN POEMUIOBJ poemuiobj, IN DWORD dwFlags, IN PCSTR pmszFeatureOptionBuf, IN DWORD cbIn, OUT PDWORD pdwResult);
//
// Helper function to retrieve the option(s) of a given feature that are
// constrained in driver's current setting.
//
STDMETHOD(EnumConstrainedOptions) (THIS_ IN POEMUIOBJ poemuiobj, IN DWORD dwFlags, IN PCSTR pszFeatureKeyword, OUT PSTR pmszConstrainedOptionList, IN DWORD cbSize, OUT PDWORD pcbNeeded);
//
// Helper function to retrieve a list of feature/option keyword pairs from
// driver's current setting that conflict with the given feature/option pair.
//
STDMETHOD(WhyConstrained) (THIS_ IN POEMUIOBJ poemuiobj, IN DWORD dwFlags, IN PCSTR pszFeatureKeyword, IN PCSTR pszOptionKeyword, OUT PSTR pmszReasonList, IN DWORD cbSize, OUT PDWORD pcbNeeded);
//
// Following five helper functions are supported for any UI plugins.
//
// Helper function to retrieve global attribute.
//
STDMETHOD(GetGlobalAttribute) (THIS_ IN POEMUIOBJ poemuiobj, IN DWORD dwFlags, IN PCSTR pszAttribute, OUT PDWORD pdwDataType, OUT PBYTE pbData, IN DWORD cbSize, OUT PDWORD pcbNeeded);
//
// Helper function to retrieve attribute of a given feature.
//
STDMETHOD(GetFeatureAttribute) (THIS_ IN POEMUIOBJ poemuiobj, IN DWORD dwFlags, IN PCSTR pszFeatureKeyword, IN PCSTR pszAttribute, OUT PDWORD pdwDataType, OUT PBYTE pbData, IN DWORD cbSize, OUT PDWORD pcbNeeded);
//
// Helper function to retrieve attribute of a given feature/option selection.
//
STDMETHOD(GetOptionAttribute) (THIS_ IN POEMUIOBJ poemuiobj, IN DWORD dwFlags, IN PCSTR pszFeatureKeyword, IN PCSTR pszOptionKeyword, IN PCSTR pszAttribute, OUT PDWORD pdwDataType, OUT PBYTE pbData, IN DWORD cbSize, OUT PDWORD pcbNeeded);
//
// Helper function to retrieve the list of feature keyword.
//
STDMETHOD(EnumFeatures) (THIS_ IN POEMUIOBJ poemuiobj, IN DWORD dwFlags, OUT PSTR pmszFeatureList, IN DWORD cbSize, OUT PDWORD pcbNeeded);
//
// Helper function to retrieve the list of options keyword of a given feature.
//
STDMETHOD(EnumOptions) (THIS_ IN POEMUIOBJ poemuiobj, IN DWORD dwFlags, IN PCSTR pszFeatureKeyword, OUT PSTR pmszOptionList, IN DWORD cbSize, OUT PDWORD pcbNeeded);
//
// Helper function to query system simulation support
//
STDMETHOD(QuerySimulationSupport) (THIS_ IN HANDLE hPrinter, IN DWORD dwLevel, OUT PBYTE pCaps, IN DWORD cbSize, OUT PDWORD pcbNeeded);
private: void Clear(); };
#endif
|