IPrintOemPS::EnableDriver-Methode (prcomoem.h)

Mit der IPrintOemPS::EnableDriver-Methode kann ein Rendering-Plug-In für Pscript einige DDI-Grafikfunktionen einbinden.

Syntax

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

Parameter

DriverVersion

Vom Aufrufer bereitgestellte Schnittstellenversionsnummer. Dieser Wert wird durch PRINTER_OEMINTF_VERSION in printoem.h definiert.

cbSize

Vom Aufrufer bereitgestellte Größe der Struktur, auf die pded verweist, in Bytes.

pded

Vom Aufrufer bereitgestellter Zeiger auf eine DRVENABLEDATA-Struktur .

Rückgabewert

Die -Methode muss einen der folgenden Werte zurückgeben:

Rückgabecode BESCHREIBUNG
S_OK Der Vorgang wurde erfolgreich ausgeführt.
E_FAIL Fehler beim Vorgang
E_NOTIMPL Die Methode ist nicht implementiert.

Hinweise

Die IPrintOemPS::EnableDriver-Methode ermöglicht es einem Rendering-Plug-In, dieselben Arten von Vorgängen wie die DrvEnableDriver-Funktion auszuführen, die von Druckergrafik-DLLs exportiert wird.

Wie die DrvEnableDriver-Funktion ist die IPrintOemPS::EnableDriver-Methode für die Bereitstellung von Adressen intern unterstützter Grafik-DDI-Funktionen zuständig, die als Hookfunktionen bezeichnet werden. Es können auch andere einmalige Initialisierungsvorgänge ausgeführt werden. Im Gegensatz zur DrvEnableDriver-Funktion ist die Implementierung der IPrintOemPS::EnableDriver-Methode optional.

Wenn Sie IPrintOemPS::EnableDriver implementieren, müssen Sie auch IPrintOemPS::D isableDriver implementieren. Aktionen, die mit der früheren Methode begonnen wurden, müssen möglicherweise in der letztgenannten Methode abgeschlossen werden. Wenn z. B. ein großer Puffer in IPrintOemPS::EnableDriver zugeordnet wird, die Zuordnung in IPrintOemPS::D isableDriver jedoch nicht aufgehoben wird, kann es zu einem Speicherverlust kommen.

Die -Methode sollte die angegebene DRVENABLEDATA-Struktur füllen und ein Array von DRVFN-Strukturen zuordnen. Es sollte das Array mit Zeigern auf Hookingfunktionen zusammen mit von winddi.h definierten Indexwerten füllen, die die eingebundenen Grafik-DDI-Funktionen identifizieren.

Ein Rendering-Plug-In für Pscript5 kann eine Grafik-DDI-Funktion nur einbinden, wenn der Pscript5-Treiber die Funktion definiert. Die folgenden Grafik-DDI-Funktionen sind in Pscript5 und oder Unidrv definiert und können daher eingebunden werden:

Wenn Sie eine benutzerdefinierte Hookingfunktion bereitstellen, wird die entsprechende Grafik-DDI-Funktion des Treibers vorzeitig entfernt. Hooking-Funktionen können auch die Grafik-DDI-Funktionen des Treibers zurückrufen. Weitere Informationen finden Sie unter Angepasste Grafik-DDI-Funktionen.

Angepasste Hookingfunktionen verfügen über die gleichen Eingabe- und Ausgabeparameter wie die entsprechende Grafik-DDI-Funktion, mit einer Ausnahme: Wenn Grafik-DDI-Funktionen PDEV-Zeiger empfangen, erhalten benutzerdefinierte Hookingfunktionen DEVOBJ-Zeiger . Es gibt zwei Möglichkeiten, wie diese Funktionen PDEV-Zeiger empfangen können:

  1. Als Inhalt des dhpdev-Elements einer SURFOBJ-Struktur für die Zieloberfläche. Für die entsprechende angepasste Hookingfunktion zeigt der dhpdev-Member der SURFOBJ-Zielstruktur auf eine DEVOBJ-Struktur und muss in den Typ PDEVOBJ umgewandelt werden, wenn darauf verwiesen wird. Ein Beispiel für grafik-DDI-Funktion ist DrvBitBlt.

  2. Als Eingabeargument für einen dhpdev-Parameter . Die entsprechende benutzerdefinierte Hookingfunktion muss diesen Eingabeparameter in den Typ PDEVOBJ umwandeln, wenn auf ihn verwiesen wird. Ein Beispiel für grafik-DDI-Funktion ist DrvDitherColor.

Während eine Druckergrafik-DLL die Adressen ihrer Funktionen DrvEnablePDEV, DrvDisablePDEV und DrvResetPDEV in der DRVENABLEDATA-Struktur enthält, implementiert ein Rendering-Plug-In für Pscript5 EnablePDEV, DisablePDEV und ResetPDEV als Methoden der IPrintOemPS-Schnittstelle und platziert ihre Adressen nicht in der DRVENABLEDATA-Struktur.

Wenn IPrintOemPS::EnableDriver-Methoden von mehreren Rendering-Plug-Ins exportiert werden, werden die Methoden in der Reihenfolge aufgerufen, in der die Plug-Ins für die Installation angegeben werden.

Jede Grafik-DDI-Funktion kann durch ein Rendering-Plug-In eingebunden werden. Wenn mehrere Plug-Ins versuchen, dieselbe Grafik-DDI-Funktion zu integrieren, werden alle Hookouts nach dem ersten ignoriert.

Weitere Informationen zum Erstellen und Installieren von Rendering-Plug-Ins finden Sie unter Anpassen der Druckertreiber von Microsoft.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile prcomoem.h (include Prcomoem.h)