Freigeben über


IPrintOemUni::MemoryUsage-Methode (prcomoem.h)

Die IPrintOemUni::MemoryUsage-Methode kann mit Unidrv-unterstützten Druckern verwendet werden, um den für die Verwendung durch die IPrintOemUni::ImageProcessing-Methode des Rendering-Plug-Ins erforderlichen Arbeitsspeicher anzugeben.

Syntax

HRESULT MemoryUsage(
  PDEVOBJ         pdevobj,
  POEMMEMORYUSAGE pMemoryUsage
);

Parameter

pdevobj

Vom Aufrufer bereitgestellter Zeiger auf eine DEVOBJ- Struktur.

pMemoryUsage

Vom Aufrufer bereitgestellter Zeiger auf eine OEMMEMORYUSAGE 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.
E_NOTIMPL
Die Methode ist nicht implementiert.

Bemerkungen

Der Zweck der IPrintOemUni::MemoryUsage Methode besteht darin, dem Unidrv-Treiber zu helfen, die optimale Größe für die GDI-Zeichnungsoberfläche basierend auf den Speicheranforderungen der IPrintOemUni::ImageProcessing-Methode zu bestimmen. Die Implementierung der IPrintOemUni::MemoryUsage-Methode ist optional.

Die IPrintOemUni::MemoryUsage-Methode sollte zwei Werte wie folgt zurückgeben:

  • Die Größe des dauerhaft zugewiesenen Speichers in fester Größe, den die IPrintOemUni::ImageProcessing- Methode zuordnen muss.

    Dieser Wert wird im dwFixedMemoryUsage Member der OEMMEMORYUSAGE Struktur zurückgegeben.

  • Die Zum Speichern einer Bitmap erforderliche Menge, nachdem die IPrintOemUni::ImageProcessing--Methode die Verarbeitung abgeschlossen hat.

    Das Rendering-Plug-In gibt diese verarbeitete Bitmap entweder an Unidrv zurück oder spools sie. Die zum Speichern der verarbeiteten Bitmap erforderliche Speichermenge wird in der dwPercentMemoryUsage Member der OEMMEMORYUSAGE-Struktur zurückgegeben und als Prozentsatz der Größe der Quellbitmap ausgedrückt.

Der im dwPercentMemoryUsage Member zurückgegebene Wert sollte zusätzlich zur Größe der verarbeiteten Bitmap die Menge aller zusätzlichen Speicherzuweisungen enthalten, die von der Größe der Quellbitmap abhängig sind.

Die dwMaxBandSize Member der OEMMEMORYUSAGE-Struktur wird von Unidrv bereitgestellt und gibt die standardmäßige maximale Bandgröße an.

Bevor der Unidrv-Treiber eine Zeichnungsoberfläche erstellt, fordert er GDI an, die optimale Größe für Bildbandbitmaps basierend auf dem verfügbaren Systemspeicher zu ermitteln. Dieser optimale Speicherplatz muss für jede Bandbitmap zwischen einer Quellbitmap freigegeben werden, die an die IPrintOemUni::ImageProcessing-Methode und eine (in der Regel kleinere) verarbeitete Bitmap übergeben wird, die die Methode entweder zurückgibt oder ausgibt. Unidrv ruft die IPrintOemUni::MemoryUsage-Methode des Rendering-Plug-Ins auf, sofern vorhanden, und verwendet das Ergebnis, um zu berechnen, wie der optimale Speicherplatz am besten dividiert werden kann.

Angenommen, GDI meldet, dass die optimale Speichermenge für die Zeichnung 6 Mb beträgt (in der OEMMEMORYUSAGE-Struktur dwMaxBandSize Member) enthalten ist, während die IPrintOemUni::MemoryUsage-Methode des Rendering-Plug-Ins Werte von Null für dwFixedMemoryUsage und 50 für dwPercentMemoryUsagezurückgibt. Der Wert 50 bedeutet, dass die IPrintOemUni::ImageProcessing Ausgabebitmaps der Methode 50 Prozent kleiner als die Quellbitmaps sind. Daher weist Unidrv eine Quellbitmapgröße von 4 MB zu, wodurch Ausgabebitmaps 2 MB groß sind.

Wenn keine IPrintOemUni::MemoryUsage Methode bereitgestellt wird, weist Unidrv dem Quellbitmap den optimalen verfügbaren Platz zu. Dies ist akzeptabel, wenn die IPrintOemUni::ImageProcessing--Methode die verarbeitete Bitmap im für die Quellbitmap zugewiesenen Speicherplatz zurückgibt. Wenn jedoch die IPrintOemUni::ImageProcessing--Methode eines Rendering-Plug-Ins Platz für eine Zielbitmap zuweist, aber keine IPrintOemUni::MemoryUsage Methode bereitstellt, liegt das Ergebnis darin, dass mehr Arbeitsspeicher für Bitmaps zugewiesen wird als die optimale verfügbare Größe, was möglicherweise zu Leistungsbeeinträchtigungen führt.

Die IPrintOemUni::MemoryUsage-Methode ist optional. Wenn ein Rendering-Plug-In diese Methode implementiert, muss die IPrintOemUni::GetImplementedMethod--Methode S_OK zurückgeben, wenn es "MemoryUsage" als Eingabe empfängt.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- prcomoem.h (einschließlich Prcomoem.h)

Siehe auch

DEVOBJ-

IPrintOemUni

IPrintOemUni::ImageProcessing

OEMMEMORYUSAGE