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 |
---|---|
|
Operazione completata. |
|
Operazione non riuscita. |
|
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 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) |