Metodo IPrintOemPrintTicketProvider::BindPrinter (prcomoem.h)
Il metodo IPrintOemPrintTicketProvider::BindPrinter consente al driver principale di associare un set di URI (Uniform Resource Identifier) dello spazio dei nomi privato a un dispositivo. Questo metodo consente inoltre al plug-in di memorizzare nella cache le informazioni (ad esempio l'handle della stampante) che possono essere usate in un secondo momento.
Sintassi
HRESULT BindPrinter(
[in] HANDLE hPrinter,
[in] INT version,
[out] POEMPTOPTS pOptions,
[out] INT *cNamespaces,
[out] BSTR **ppNamespaces
);
Parametri
[in] hPrinter
Handle di stampa dello spooler, fornito da Unidrv. Il provider non deve chiudere questo handle in qualsiasi momento, perché il client del provider è responsabile della gestione della durata di questo handle. Il provider può memorizzare nella cache l'handle di stampa; tutte le chiamate future su questo oggetto sono relative alla stampante associata a questo handle.
[in] version
Numero di versione principale dello schema di stampa. Windows Vista supporta solo la versione 1.
[out] pOptions
Puntatore a una variabile che riceve uno dei valori enumerati seguenti:
OEMPT_DEFAULT
Il sistema inserisce una codifica binaria (un oggetto binario di grandi dimensioni [BLOB]) della struttura privata DEVMODEW nel ticket di stampa in una conversione di devMODEW in un ticket di stampa.
OEMPT_NOSNAPSHOT
Il sistema non inserisce una codifica binaria (BLOB) della struttura DEVMODEW privata nel ticket di stampa in una conversione di devMODEW in un ticket di stampa. Utilizzare questo valore se tutti i membri DEVMODEW pubblici e privati sono completamente rappresentati nel ticket di stampa.
L'oggetto OEM chiamato deve impostare il valore a cui punta questo parametro.
[out] cNamespaces
Puntatore a una variabile che riceve il numero di URI dello spazio dei nomi privati usati nel plug-in. Questo numero rappresenta il numero di stringhe nella matrice a cui punta *ppNamespaces.
[out] ppNamespaces
Puntatore a una variabile che riceve l'indirizzo del primo elemento di una matrice BSTR. Il plug-in riempie ogni posizione della matrice con un URI dello spazio dei nomi. Per altre informazioni su questo parametro, vedere la sezione Osservazioni seguente.
Valore restituito
IPrintOemPrintTicketProvider::BindPrinter deve restituire uno dei valori seguenti.
Codice restituito | Descrizione |
---|---|
S_OK | Operazione riuscita. |
E_VERSION_NOT_SUPPORTED | Il plug-in non supporta la versione dello schema di stampa specificato nel parametro versione. |
Osservazioni
Il plug-in è responsabile dell'allocazione della memoria per la matrice a cui punta il parametro ppNamespaces e per le stringhe URI dello spazio dei nomi. La matrice deve essere allocata usando la funzione CoTaskMemAlloc; Le stringhe dello spazio dei nomi devono essere allocate usando la funzione SysAllocString. Entrambe queste funzioni sono descritte nella documentazione di Microsoft Windows SDK. La matrice a cui punta il parametro ppNamespaces non è necessario contenere gli spazi dei nomi per le parole chiave dello schema di stampa o il framework dello schema di stampa.
L'associazione a un dispositivo consente al provider di memorizzare nella cache determinati oggetti e gestisce che sarà necessario per i futuri servizi di funzionalità di stampa o di stampa su tale dispositivo. Ad esempio, l'handle della stampante in hPrinter può essere memorizzato nella cache. IPrintOemPrintTicketProvider::BindPrinter è garantito che venga chiamato una sola volta.
Un oggetto IPrintOemPrintTicketProvider non deve essere in grado di associare più volte. Il gestore ticket di stampa usa sempre istanze dell'oggetto IPrintOemPrintTicketProvider diverse per l'associazione a dispositivi diversi. Tutte le risorse acquisite in una chiamata riuscita a IPrintOemPrintTicketProvider::BindPrinter devono essere rilasciate quando il conteggio dei riferimenti di un oggetto IPrintOemPrintTicketProvider è zero. Si noti che il provider non deve chiudere l'handle passato alla chiamata a BindPrinter). Il gestore ticket di stampa potrebbe creare più provider per lo stesso dispositivo, in versioni diverse, se sono supportate più versioni.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Desktop |
intestazione | prcomoem.h (include Prcomoem.h) |
Vedere anche
IPrintOemPrintTicketProvider::ConvertDevModeToPrintTicket