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 |
---|---|
|
Der Vorgang wurde erfolgreich ausgeführt. |
|
Fehler beim Vorgang. |
|
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 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) |