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) |