Freigeben über


IPrintOemUni::EnableDriver-Methode (prcomoem.h)

Mit der IPrintOemUni::EnableDriver--Methode kann ein Rendering-Plug-In für Unidrv- einige Grafik-DDI-Funktionen eingebunden werden.

Syntax

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

Parameter

DriverVersion

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

cbSize

Vom Aufrufer bereitgestellte Größe in Byte der Struktur, auf die durch pdedverwiesen wird.

pded

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 war erfolgreich.
E_FAIL Fehler beim Vorgang.

Bemerkungen

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 wie die DrvEnableDriver--Funktion ausführen, die von Druckergrafik-DLLs exportiert wird.

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

Wenn Sie IPrintOemUni::EnableDriverimplementieren, müssen Sie auch IPrintOemUni::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 IPrintOemUni::EnableDriverzugeordnet ist, jedoch nicht in IPrintOemUni::D isableDriver-, kann ein Speicherverlust auftreten.

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

Ein Rendering-Plug-In für Unidrv kann eine Grafik-DDI-Funktion nur dann verbinden, 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 vorgebezahlt. Hooking-Funktionen können auch in die Grafik-DDI-Funktionen des Treibers zurückrufen. Weitere Informationen finden Sie unter Custom Graphics DDI Functions.

Benutzerdefinierte Hooking-Funktionen verfügen über die gleichen Eingabe- und Ausgabeparameter wie die entsprechende Grafik-DDI-Funktion, mit einer Ausnahme: Grafik-DDI-Funktionen empfangen PDEV-Zeiger, angepasste Hookingfunktionen empfangen DEVOBJ Zeiger. Es gibt zwei Möglichkeiten für Grafik-DDI-Funktionen zum Empfangen von PDEV-Zeigern:

  • Als Inhalt des dhpdev Mitglied einer SURFOBJ Struktur für die Zieloberfläche. Für die entsprechende angepasste Hooking-Funktion verweist die ziel-SURFOBJ-Struktur auf die dhpdev Member auf eine DEVOBJ-Struktur und muss bei Verweisen in den Typ PDEVOBJ umgestellt werden. Eine Beispiel-Grafik-DDI-Funktion ist DrvBitBlt.

  • Als Eingabeargument für einen dhpdev Parameter. Die entsprechende benutzerdefinierte Hooking-Funktion muss diesen Eingabeparameter in den Typ PDEVOBJ umwandeln, wenn darauf verwiesen wird. Eine Beispiel-Grafik-DDI-Funktion ist DrvDitherColor.

Beachten Sie, dass während ein Druckergrafik DLL- die Adressen seiner DrvEnablePDEV, DrvDisablePDEVund DrvResetPDEV Funktionen in der DRVENABLEDATA-Struktur enthält, ein Rendering-Plug-In exportiert explizit EnablePDEV-, DisablePDEV-und ResetPDEV- als Methoden der IPrintOemUni Schnittstelle und platziert ihre Adressen nicht in der DRVENABLEDATA-Struktur.

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
Header- prcomoem.h (einschließlich Prcomoem.h)