Metodo IPrintOemPS::EnableDriver (prcomoem.h)

Il metodo IPrintOemPS::EnableDriver consente a un plug-in di rendering per Pscript 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
E_NOTIMPL Il metodo non è implementato.

Commenti

Il metodo IPrintOemPS::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 IPrintOemPS::EnableDriver è responsabile della fornitura di indirizzi di funzioni DDI grafiche supportate internamente, note come funzioni di hook. Può anche eseguire altre operazioni di inizializzazione una tantum. A differenza della funzione DrvEnableDriver , l'implementazione del metodo IPrintOemPS::EnableDriver è facoltativa.

Se si implementa IPrintOemPS::EnableDriver, è necessario implementare anche IPrintOemPS::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 IPrintOemPS::EnableDriver, ma non deallocato in IPrintOemPS::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 Pscript5 può associare una funzione DDI grafica solo se il driver Pscript5 definisce la funzione. Le funzioni DDI grafiche seguenti sono definite in Pscript5 e o Unidrv 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 . Per queste funzioni è possibile ricevere puntatori PDEV in due modi:

  1. 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.

  2. 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.

Mentre una DLL grafica della stampante include gli indirizzi delle relative funzioni DrvEnablePDEV, DrvDisablePDEV e DrvResetPDEV nella struttura DRVENABLEDATA, un plug-in di rendering per Pscript5 implementa EnablePDEV, DisablePDEV e ResetPDEV come metodi dell'interfaccia IPrintOemPS e non inserisce i relativi indirizzi nella struttura DRVENABLEDATA.

Se i metodi IPrintOemPS::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 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)