Freigeben über


IPrintOemUni::EnableDriver-Methode (prcomoem.h)

Mit der IPrintOemUni::EnableDriver-Methode kann ein Rendering-Plug-In für Unidrv einige Grafik-DDI-Funktionen 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 in Bytes, auf die von pded verwiesen wird.

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

Hinweise

Ein Rendering-Plug-In für Unidrv muss die IPrintOemUni::EnableDriver-Methode implementieren.

Mit der IPrintOemUni::EnableDriver-Methode kann ein Rendering-Plug-In dieselben Arten von Vorgängen ausführen wie die DrvEnableDriver-Funktion , die von Druckergrafik-DLLs exportiert wird.

Wie die DrvEnableDriver-Funktion ist die IPrintOemUni::EnableDriver-Methode für die Bereitstellung von Adressen intern unterstützter Grafik-DDI-Funktionen verantwortlich, die als Hookingfunktionen bezeichnet werden. Es kann auch andere einmalige Initialisierungsvorgänge ausführen. Im Gegensatz zur DrvEnableDriver-Funktion ist die Implementierung von IPrintOemUni::EnableDriver optional.

Wenn Sie IPrintOemUni::EnableDriver implementieren, müssen Sie auch IPrintOemUni::D isableDriver implementieren. Aktionen, die mit der früheren Methode begonnen wurden, müssen möglicherweise mit der letztgenannten Methode abgeschlossen werden. Wenn beispielsweise ein großer Puffer in IPrintOemUni::EnableDriver zugewiesen, aber nicht in IPrintOemUni::D isableDriver zugeordnet ist, 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 sowie mit winddi.h-definierten Indexwerten füllen, die die eingebundenen Grafik-DDI-Funktionen identifizieren.

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

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

Benutzerdefinierte 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 für Grafik-DDI-Funktionen, PDEV-Zeiger zu empfangen:

  • Als Inhalt des dhpdev-Members einer SURFOBJ-Struktur für die Zieloberfläche. Für die entsprechende benutzerdefinierte Hookingfunktion verweist das dhpdev-Element der ZIEL-SURFOBJ-Struktur auf eine DEVOBJ-Struktur und muss beim Verweis in den Typ PDEVOBJ umgewandelt werden. Eine Grafik-DDI-Beispielfunktion ist DrvBitBlt.

  • Als Eingabeargument für einen dhpdev-Parameter . Die entsprechende angepasste Hookingfunktion muss diesen Eingabeparameter in den Typ PDEVOBJ umwandeln, wenn er darauf verweist. Eine Beispiel-Grafik-DDI-Funktion ist DrvDitherColor.

Beachten Sie, dass eine Druckergrafik-DLL zwar die Adressen ihrer Funktionen DrvEnablePDEV, DrvDisablePDEV und DrvResetPDEV in der DRVENABLEDATA-Struktur enthält, ein Rendering-Plug-In jedoch EnablePDEV, DisablePDEV und ResetPDEV explizit als Methoden der IPrintOemUni-Schnittstelle exportiert und deren Adressen nicht in der DRVENABLEDATA-Struktur platziert.

Wenn IPrintOemUni::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 nur durch ein Rendering-Plug-In eingebunden werden. Wenn mehrere Plug-Ins versuchen, dieselbe Grafik-DDI-Funktion zu verbinden, werden alle Hook-Outs 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 (einschließlich Prcomoem.h)