Metodo IPrintOemUni::MemoryUsage (prcomoem.h)

Il IPrintOemUni::MemoryUsage metodo può essere usato con stampanti supportate da Unidrv per specificare la quantità di memoria necessaria per l'uso da parte di un metodo IPrintOemUni::ImageProcessing di un plug-in di rendering.

Sintassi

HRESULT MemoryUsage(
  PDEVOBJ         pdevobj,
  POEMMEMORYUSAGE pMemoryUsage
);

Parametri

pdevobj

Puntatore fornito dal chiamante a una struttura DEVOBJ .

pMemoryUsage

Puntatore fornito dal chiamante a una struttura OEMMEMORYUSAGE .

Valore restituito

Il metodo deve restituire uno dei valori seguenti.

Codice restituito Descrizione
S_OK
Operazione completata.
E_FAIL
Operazione non riuscita.
E_NOTIMPL
Il metodo non è implementato.

Commenti

Lo IPrintOemUni::MemoryUsage scopo del metodo è aiutare il driver Unidrv a determinare le dimensioni ottimali per l'area di disegno GDI, in base ai requisiti di memoria del metodo IPrintOemUni::ImageProcessing . L'implementazione del IPrintOemUni::MemoryUsage metodo è facoltativa.

Il IPrintOemUni::MemoryUsage metodo deve restituire due valori, come segue:

  • Quantità di memoria allocata in modo permanente e di dimensioni fisse che il metodo IPrintOemUni::ImageProcessing deve allocare.

    Questo valore viene restituito nel membro dwFixedMemoryUsage della struttura OEMMEMORYUSAGE .

  • La quantità di memoria necessaria per contenere una bitmap dopo l'elaborazione del metodo IPrintOemUni::ImageProcessing .

    Il plug-in di rendering restituisce questa bitmap elaborata in Unidrv o lo esegue. La quantità di memoria necessaria per archiviare la bitmap elaborata viene restituita nel membro dwPercentMemoryUsage della struttura OEMMEMORYUSAGE e viene espressa come percentuale delle dimensioni della bitmap di origine.

Il valore restituito nel membro dwPercentMemoryUsage deve includere, oltre alle dimensioni della bitmap elaborata, la quantità di eventuali allocazioni di memoria aggiuntive dipendenti dalle dimensioni della bitmap di origine.

Il membro dwMaxBandSize della struttura OEMMEMORYUSAGE viene fornito da Unidrv e specifica le dimensioni massime massime predefinite.

Prima che il driver Unidrv crei una superficie di disegno, richiede a GDI di determinare le dimensioni ottimali per le bitmap di banda delle immagini, in base alla memoria di sistema disponibile. Questo spazio di memoria ottimale deve essere condiviso, per ogni bitmap a banda, tra una bitmap di origine passata al metodo IPrintOemUni::ImageProcessing e una bitmap elaborata in genere più piccola che il metodo restituisce o restituisce output. Unidrv chiama il metodo del IPrintOemUni::MemoryUsage plug-in di rendering, se esistente e usa il risultato per calcolare il modo migliore per dividere lo spazio di memoria ottimale.

Si supponga, ad esempio, che la quantità ottimale di memoria da usare per il disegno sia di 6 megabyte (contenuta nel membro dwMaxBandSize della struttura OEMMEMORYUSAGE), mentre il metodo plug-in IPrintOemUni::MemoryUsage di rendering restituisce valori pari a zero per dwFixedMemoryUsage e 50 per dwPercentMemoryUsage. Il valore di 50 significa che le bitmap di output del metodo IPrintOemUni::ImageProcessing saranno inferiori al 50% rispetto alle bitmap di origine. Pertanto, Unidrv allocherà una dimensione bitmap di origine di 4 megabyte, causando così che le bitmap di output siano 2 megabyte.

Se non viene fornito un IPrintOemUni::MemoryUsage metodo, Unidrv alloca tutto lo spazio disponibile ottimale per la bitmap di origine. Ciò è accettabile se il metodo IPrintOemUni::ImageProcessing restituisce la bitmap elaborata nello spazio di memoria allocato per la bitmap di origine. Tuttavia, se un plug-in di rendering del metodo IPrintOemUni::ImageProcessing alloca spazio per una bitmap di destinazione, ma non fornisce un IPrintOemUni::MemoryUsage metodo, il risultato è che più memoria verrà allocata per le bitmap rispetto alle dimensioni ottimali disponibili, causando potenzialmente una riduzione delle prestazioni.

Il IPrintOemUni::MemoryUsage metodo è facoltativo. Se un plug-in di rendering implementa questo metodo, il metodo IPrintOemUni::GetImplementedMethod deve restituire S_OK quando riceve "MemoryUsage" come input.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione prcomoem.h (include Prcomoem.h)

Vedi anche

DEVOBJ

IPrintOemUni

IPrintOemUni::ImageProcessing

OEMMEMORYUSAGE