Freigeben über


IPrintOemUni::MemoryUsage-Methode (prcomoem.h)

Die IPrintOemUni::MemoryUsage -Methode kann mit Von Unidrv unterstützten Druckern verwendet werden, um die Menge an Arbeitsspeicher anzugeben, die für die Verwendung durch die IPrintOemUni::ImageProcessing-Methode eines Rendering-Plug-Ins erforderlich ist.

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 wurde erfolgreich ausgeführt.
E_FAIL
Fehler beim Vorgang.
E_NOTIMPL
Die Methode ist nicht implementiert.

Hinweise

Die IPrintOemUni::MemoryUsage Methode soll dem Unidrv-Treiber 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 wie folgt zwei Werte zurückgeben:

  • Die Menge des dauerhaft zugeordneten Arbeitsspeichers mit fester Größe, den die IPrintOemUni::ImageProcessing-Methode zuordnen muss.

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

  • Die Menge an Arbeitsspeicher, die erforderlich ist, um eine Bitmap zu speichern, nachdem die IPrintOemUni::ImageProcessing-Methode die Verarbeitung abgeschlossen hat.

    Das Rendering-Plug-In gibt diese verarbeitete Bitmap entweder an Unidrv zurück oder spoolt sie. Die zum Speichern der verarbeiteten Bitmap erforderliche Arbeitsspeichermenge wird im dwPercentMemoryUsage-Element der OEMMEMORYUSAGE-Struktur zurückgegeben und als Prozentsatz der Größe der Quellbitbitbit ausgedrückt.

Der wert, der im dwPercentMemoryUsage-Element zurückgegeben wird, sollte zusätzlich zur Größe der verarbeiteten Bitmap die Menge zusätzlicher Speicherbelegungen enthalten, die von der Größe der Quellbit abhängig sind.

Der dwMaxBandSize-Member der OEMMEMORYUSAGE-Struktur wird von Unidrv bereitgestellt und gibt die maximale Standardbandgröße an.

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

Angenommen, GDI meldet, dass die optimale Speichermenge für das Zeichnen 6 Megabyte beträgt (enthalten im dwMaxBandSize-Element der OEMMEMORYUSAGE-Struktur), während die Methode des Rendering-Plug-Ins IPrintOemUni::MemoryUsage Werte von null für dwFixedMemoryUsage und 50 für dwPercentMemoryUsage zurückgibt. Der Wert 50 bedeutet, dass die Ausgabebitbitbits der IPrintOemUni::ImageProcessing-Methode um 50 Prozent kleiner sind als die Quellbitbitbits. Daher weist Unidrv eine Quellbitgröße von 4 Megabyte zu, sodass Ausgabebits 2 Mb groß sind.

Wenn keine IPrintOemUni::MemoryUsage Methode bereitgestellt wird, ordnet Unidrv der Quellbit den optimalen verfügbaren Speicherplatz zu. Dies ist akzeptabel, wenn die IPrintOemUni::ImageProcessing-Methode die verarbeitete Bitmap im Speicher zurückgibt, der der Quellbitbitbit zugeordnet ist. Wenn die IPrintOemUni::ImageProcessing-Methode eines Rendering-Plug-Ins jedoch Speicherplatz für eine Zielbit zuweist, aber keine Methode bereitstellt IPrintOemUni::MemoryUsage , wird für Bitmaps mehr Arbeitsspeicher zugewiesen als die optimale verfügbare Größe, was möglicherweise zu Leistungseinbußen führt.

Die IPrintOemUni::MemoryUsage -Methode ist optional. Wenn ein Rendering-Plug-In diese Methode implementiert, muss die IPrintOemUni::GetImplementedMethod-Methode des Plug-Ins S_OK zurückgeben, wenn "MemoryUsage" als Eingabe empfangen wird.

Anforderungen

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

Weitere Informationen

DEVOBJ

IPrintOemUni

IPrintOemUni::ImageProcessing

OEMMEMORYUSAGE