Metodo IPrintOemUI::D eviceCapabilities (prcomoem.h)
Il IPrintOemUI::DeviceCapabilities
metodo consente a un plug-in dell'interfaccia utente di specificare funzionalità personalizzate del dispositivo.
Sintassi
HRESULT DeviceCapabilities(
POEMUIOBJ poemuiobj,
HANDLE hPrinter,
PWSTR pDeviceName,
WORD wCapability,
PVOID pOutput,
PDEVMODE pPublicDM,
PVOID pOEMDM,
DWORD dwOld,
DWORD *dwResult
);
Parametri
poemuiobj
Puntatore fornito dal chiamante a una struttura OEMUIOBJ .
hPrinter
Handle fornito dal chiamante al dispositivo stampante.
pDeviceName
Puntatore fornito dal chiamante a una stringa che rappresenta il nome del dispositivo.
wCapability
Flag fornito dal chiamante che indica il tipo di informazioni che il metodo deve restituire. Per un elenco di flag, vedere la descrizione della funzione DrvDeviceCapabilities .
pOutput
Puntatore fornito dal chiamante a un buffer per ricevere le informazioni richieste. Il tipo di informazioni restituite dipende dal flag specificato da wCapability.
pPublicDM
Puntatore fornito dal chiamante a una struttura DEVMODEW convalidata.
pOEMDM
Puntatore fornito dal chiamante ai membri della struttura DEVMODEW privati del plug-in dell'interfaccia utente.
dwOld
Valore restituito fornito dal chiamante dalla funzione DrvDeviceCapabilities del driver della stampante o da un altro plug-in dell'interfaccia utente. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
dwResult
Valore restituito che dipende dal flag specificato da wCapability. Per altre informazioni, vedere la descrizione della funzione DrvDeviceCapabilities e la sezione Osservazioni seguente.
Valore restituito
Il metodo deve restituire uno dei valori seguenti.
Codice restituito | Descrizione |
---|---|
|
Operazione completata. |
|
Il plug-in intende usare il buffer a cui punta il parametro pOutput per scopi specifici. Questo valore restituito è definito in prcomoem.h. Per altre informazioni su quando utilizzare questo valore restituito, vedere la sezione Osservazioni seguente. |
|
Operazione non riuscita. |
|
Il metodo non è implementato. |
Commenti
Il metodo del plug-in di IPrintOemUI::DeviceCapabilities
un'interfaccia utente esegue gli stessi tipi di operazioni della funzione DrvDeviceCapabilities esportata dalle DLL dell'interfaccia della stampante in modalità utente. Il metodo specifica le funzionalità fornite dalla stampante.
È possibile usare il metodo per annullare il IPrintOemUI::DeviceCapabilities
supporto Unidrv per una funzionalità o per aggiungere una funzionalità non disponibile dal driver della stampante. Il driver chiama IPrintOemUI::DeviceCapabilities
dall'interno della funzione DrvDeviceCapabilities .
Se il metodo indica il supporto personalizzato per una funzionalità (impostando i bit appropriati in risposta a un flag di DC_FIELDS ricevuto), il IPrintOemUI::DeviceCapabilities
codice personalizzato deve supportare completamente la funzionalità. Il supporto completo include in genere la restituzione di informazioni sulla funzionalità in risposta alle chiamate al IPrintOemUI::DeviceCapabilities
metodo, oltre a fornire codice appropriato in modalità utente o in modalità kernel per implementare la funzionalità.
Se IPrintOemUI::DeviceCapabilities
i metodi vengono esportati da più plug-in dell'interfaccia utente, i metodi vengono chiamati nell'ordine in cui vengono specificati i plug-in per l'installazione. Ogni volta che viene chiamato il metodo di un plug-in, il valore di IPrintOemUI::DeviceCapabilities
input dwOld è il valore restituito dal metodo precedentemente chiamato plug-in IPrintOemUI::DeviceCapabilities
. Per il primo plug-in chiamato , dwOld contiene il valore restituito dalla funzione DrvDeviceCapabilities del driver della stampante. Analogamente, il buffer a cui punta pOutput contiene, all'input, tutti i contenuti inseriti da una funzione chiamata IPrintOemUI::DeviceCapabilities
in precedenza o DrvDeviceCapabilities .
Affinché più plug-in dell'interfaccia utente funzionino in combinazione tra loro, ogni IPrintOemUI::DeviceCapabilities
metodo deve rispettare le regole seguenti:
-
Se un plug-in dell'interfaccia utente non supporta una funzionalità specificata, il relativo
IPrintOemUI::DeviceCapabilities
metodo deve restituire solo il contenuto del parametro dwOld in dwResult. -
Se un plug-in dell'interfaccia utente supporta la funzionalità, il relativo
IPrintOemUI::DeviceCapabilities
metodo deve ignorare dwOld e il contenuto del buffer a cui punta pOutput. Deve fornire un valore restituito e un contenuto del buffer appropriato per indicare che supporta la funzionalità specificata. Se il metodo rileva un errore, deve restituire GDI_ERROR in dwResult. -
Se si vuole che un plug-in dell'interfaccia utente modifichi le informazioni sulle funzionalità ricevute nel buffer a cui punta pOutput, il relativo
IPrintOemUI::DeviceCapabilities
metodo deve modificare il contenuto del buffer e restituire un valore restituito appropriato in dwResult. Ad esempio, se wCapability è DC_FIELDS, il metodo deve or i bit che deve impostare con i bit impostati in dwOld e restituire il risultato dell'operazione OR in dwResult. - Le regole precedenti devono essere seguite anche se il contenuto ricevuto di dwOld è GDI_ERROR.
IPrintOemUI::DeviceCapabilities
metodi, specificando anche DC_FIELDS e restituisce l'unione di tutti i bit impostati al chiamante.
Il valore restituito S_DEVCAP_OUTPUT_FULL_REPLACEMENT è nuovo in Windows Vista e si applica ai plug-in dell'interfaccia utente Unidrv e Pscript5. Un plug-in deve usare il valore restituito S_DEVCAP_OUTPUT_FULL_REPLACEMENT solo se richiede il controllo completo sugli elementi inseriti nel buffer a cui punta il parametro pOutput . Né il driver Unidrv né il driver core Pscript5 inseriscono i dati nel buffer pOutput quando il plug-in restituisce S_DEVCAP_OUTPUT_FULL_REPLACEMENT. Un plug-in potrebbe dover restituire questo valore quando un'impostazione nella struttura DEVMODEW (a cui puntano i parametri pPublicDM e pOEMDM ) indica al plug-in dell'interfaccia utente che deve segnalare i dati delle funzionalità del dispositivo diversi da quello specificato nel file GPD o PPD. Ad esempio, una struttura DEVMODEW che specifica la stampa fotografica potrebbe richiedere un set diverso di tipi di carta rispetto a quelli specificati nel file GPD o PPD. In tale situazione, e indipendentemente dai valori dei parametri pOutput e dwOld , il plug-in deve restituire S_DEVCAP_OUTPUT_FULL_REPLACEMENT e deve impostare il parametro dwResult sul numero di tipi di carta che intende segnalare. Se pOutput non è NULL, il plug-in deve anche riempire il buffer a cui punta pOutput con il set desiderato di tipi di carta e deve impostare dwResult sul numero di tipi di carta che il plug-in intende segnalare.
Quando più plug-in dell'interfaccia utente sono attivi contemporaneamente e uno di essi restituisce S_DEVCAP_OUTPUT_FULL_REPLACEMENT, il driver Unidrv o Pscript5 interpreta questo valore restituito per indicare che i plug-in intendono fornire dati di output sostitutivi completi. Di conseguenza, il driver principale non inserisce dati nel buffer pOutput prima di chiamare i plug-in. Il driver principale chiama i plug-in nello stesso ordine specificato per l'installazione.
Nei casi in cui non è necessario sostituire i valori inseriti dal driver principale nel buffer pOutput , il plug-in deve restituire S_OK. I driver di base Unidrv e Pscript5 riconoscono il valore restituito S_DEVCAP_OUTPUT_FULL_REPLACEMENT solo per le funzionalità del dispositivo che usano il buffer pOutput , in altre parole, quando il parametro wCapability è impostato su uno dei flag seguenti:
DC_PAPERNAMES
DC_PAPERS
DC_PAPERSIZE
DC_BINNAMES
DC_BINS
DC_NUP
DC_PERSONALITY
DC_MEDIAREADY
DC_MEDIATYPENAMES
DC_MEDIATYPES
DC_ENUMRESOLUTIONS
Per altre informazioni sulla creazione e l'installazione di plug-in dell'interfaccia utente, vedere Personalizzazione dei driver della stampante microsoft.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | prcomoem.h (include Prcomoem.h) |