Metodo IPrintOemUni::EnableDriver (prcomoem.h)

Il metodo IPrintOemUni::EnableDriver consente a un plug-in di rendering per Unidrv di associare alcune funzioni DDI grafiche.

Sintassi

HRESULT EnableDriver(
  DWORD          DriverVersion,
  DWORD          cbSize,
  PDRVENABLEDATA pded
);

Parametri

DriverVersion

Numero di versione dell'interfaccia fornito dal chiamante. Questo valore è definito da PRINTER_OEMINTF_VERSION, in printoem.h.

cbSize

Dimensione fornita dal chiamante, in byte, della struttura a cui punta il pded.

pded

Puntatore fornito dal chiamante a una struttura DRVENABLEDATA .

Valore restituito

Il metodo deve restituire uno dei valori seguenti.

Codice restituito Descrizione
S_OK Operazione completata.
E_FAIL Operazione non riuscita

Commenti

Un plug-in di rendering per Unidrv deve implementare il metodo IPrintOemUni::EnableDriver .

Il metodo IPrintOemUni::EnableDriver consente a un plug-in di rendering di eseguire gli stessi tipi di operazioni della funzione DrvEnableDriver esportata dalle DLL della grafica della stampante.

Analogamente alla funzione DrvEnableDriver , il metodo IPrintOemUni::EnableDriver è responsabile della fornitura di indirizzi di funzioni DDI grafiche supportate internamente, note come funzioni di hooking. Può anche eseguire altre operazioni di inizializzazione una tantum. A differenza della funzione DrvEnableDriver , l'implementazione di IPrintOemUni::EnableDriver è facoltativa.

Se implementi IPrintOemUni::EnableDriver, devi implementare anche IPrintOemUni::D isableDriver. Le azioni avviate nel metodo precedente potrebbero essere necessarie per essere completate nel secondo metodo. Ad esempio, se un buffer di grandi dimensioni viene allocato in IPrintOemUni::EnableDriver, ma non deallocato in IPrintOemUni::D isableDriver, può verificarsi una perdita di memoria.

Il metodo deve riempire la struttura DRVENABLEDATA fornita e allocare una matrice di strutture DRVFN . Deve riempire la matrice con puntatori alle funzioni di associazione, insieme ai valori di indice definiti da winddi.h che identificano le funzioni DDI grafiche associate.

Un plug-in di rendering per Unidrv può associare una funzione DDI grafica solo se il driver Unidrv definisce la funzione. Le funzioni DDI grafica seguenti sono definite in Unidrv e/o Pscript5 e possono quindi essere collegate:

Se si specifica una funzione di hook personalizzata, la funzione DDI grafica equivalente del driver viene annullata. Le funzioni di hook possono anche richiamare le funzioni DDI grafiche del driver. Per altre informazioni, vedere Funzioni DDI personalizzate per la grafica.

Le funzioni di hook personalizzate hanno gli stessi parametri di input e output della funzione DDI grafica equivalente, con un'eccezione, in cui le funzioni DDI grafiche ricevono puntatori PDEV, le funzioni di hook personalizzate ricevono puntatori DEVOBJ . Esistono due modi per le funzioni DDI grafiche per ricevere puntatori PDEV:

  • Come contenuto del membro dhpdev di una struttura SURFOBJ per la superficie di destinazione. Per la funzione di hooking personalizzata equivalente, il membro dhpdev della struttura SURFOBJ di destinazione punta a una struttura DEVOBJ e deve essere eseguito il cast al tipo PDEVOBJ quando viene fatto riferimento. Una funzione DDI grafica di esempio è DrvBitBlt.

  • Come argomento di input per un parametro dhpdev . La funzione di hooking personalizzata equivalente deve eseguire il cast di questo parametro di input al tipo PDEVOBJ quando vi fa riferimento. Una funzione DDI grafica di esempio è DrvDitherColor.

Si noti che mentre una DLL grafica della stampante include gli indirizzi delle relative funzioni DrvEnablePDEV, DrvDisablePDEV e DrvResetPDEV nella struttura DRVENABLEDATA, un plug-in di rendering esporta esplicitamente EnablePDEV, DisablePDEV e ResetPDEV come metodi dell'interfaccia IPrintOemUni e non inserisce i relativi indirizzi nella struttura DRVENABLEDATA.

Se i metodi IPrintOemUni::EnableDriver vengono esportati da più plug-in di rendering, i metodi vengono chiamati nell'ordine in cui vengono specificati i plug-in per l'installazione.

Ogni funzione DDI grafica può essere collegata da un solo plug-in di rendering. Se più plug-in tentano di associare la stessa funzione DDI grafica, tutti gli hookout dopo il primo vengono ignorati.

Per altre informazioni sulla creazione e l'installazione di plug-in di rendering, vedere Personalizzazione dei driver della stampante microsoft.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione prcomoem.h (include Prcomoem.h)