IPrintOemUni ::MemoryUsage, méthode (prcomoem.h)
La méthode IPrintOemUni::MemoryUsage
peut être utilisée avec les imprimantes prises en charge par Unidrv pour spécifier la quantité de mémoire requise pour une utilisation par la méthode IPrintOemUni ::ImageProcessing d’un plug-in de rendu.
Syntaxe
HRESULT MemoryUsage(
PDEVOBJ pdevobj,
POEMMEMORYUSAGE pMemoryUsage
);
Paramètres
pdevobj
Pointeur fourni par l’appelant vers une structure DEVOBJ.
pMemoryUsage
Pointeur fourni par l’appelant vers une structure OEMMEMORYUSAGE.
Valeur de retour
La méthode doit retourner l’une des valeurs suivantes.
Retourner le code | Description |
---|---|
|
L’opération a réussi. |
|
L’opération a échoué. |
|
La méthode n’est pas implémentée. |
Remarques
L’objectif de la méthode IPrintOemUni::MemoryUsage
est d’aider le pilote Unidrv à déterminer la taille optimale de la surface de dessin GDI, en fonction des besoins en mémoire de la méthode IPrintOemUni ::ImageProcessing. L’implémentation de la méthode IPrintOemUni::MemoryUsage
est facultative.
La méthode IPrintOemUni::MemoryUsage
doit retourner deux valeurs, comme suit :
-
Quantité de mémoire allouée de manière permanente et fixe que la méthode IPrintOemUni ::ImageProcessing doit allouer.
Cette valeur est retournée dans le membre dwFixedMemoryUsage de la structure OEMMEMORYUSAGE.
-
Quantité de mémoire nécessaire pour contenir une bitmap une fois que la méthode IPrintOemUni ::ImageProcessing a terminé de le traiter.
Le plug-in de rendu retourne cette bitmap traitée à Unidrv, ou la spoule. La quantité de mémoire requise pour stocker la bitmap traitée est retournée dans le dwPercentMemoryUsage membre de la structure OEMMEMORYUSAGE, et est exprimée sous la forme d’un pourcentage de la taille de la bitmap source.
Le dwMaxBandSize membre de la structure OEMMEMORYUSAGE est fourni par Unidrv et spécifie la taille de bande maximale par défaut.
Avant que le pilote Unidrv crée une surface de dessin, il demande à GDI de déterminer la taille optimale des bitmaps de bandes d’images, en fonction de la mémoire système disponible. Cet espace mémoire optimal doit être partagé, pour chaque bitmap de bande, entre une bitmap source transmise à la méthode IPrintOemUni ::ImageProcessing et une bitmap traitée (généralement plus petite) que la méthode renvoie ou génère. Unidrv appelle la méthode IPrintOemUni::MemoryUsage
du plug-in de rendu, le cas échéant, et utilise le résultat pour calculer le meilleur moyen de diviser l’espace mémoire optimal.
Par exemple, supposons que GDI signale que la quantité optimale de mémoire à utiliser pour le dessin est de 6 mégaoctets (contenues dans la structure OEMMEMORYUSAGE dwMaxBandSize membre), tandis que la méthode IPrintOemUni::MemoryUsage
de rendu du plug-in retourne les valeurs de zéro pour dwFixedMemoryUsage et 50 pour dwPercentMemoryUsage. La valeur 50 signifie que les bitmaps de sortie de la méthode IPrintOemUni ::ImageProcessing sont plus petites que les bitmaps sources. Par conséquent, Unidrv alloue une taille bitmap source de 4 mégaoctets, ce qui entraîne la création de bitmaps de sortie de 2 mégaoctets.
Si une méthode IPrintOemUni::MemoryUsage
n’est pas fournie, Unidrv alloue tout l’espace disponible optimal à la bitmap source. Cela est acceptable si la méthode IPrintOemUni ::ImageProcessing retourne la bitmap traitée dans l’espace mémoire alloué pour la bitmap source. Toutefois, si la méthode IPrintOemUni ::ImageProcessing d’un plug-in de rendu alloue de l’espace pour une bitmap de destination, mais ne fournit pas de méthode IPrintOemUni::MemoryUsage
, le résultat est que plus de mémoire sera allouée pour les bitmaps que la taille disponible optimale, ce qui peut entraîner une dégradation des performances.
La méthode IPrintOemUni::MemoryUsage
est facultative. Si un plug-in de rendu implémente cette méthode, le plug-in IPrintOemUni ::GetImplementedMethod méthode doit retourner S_OK lorsqu’il reçoit « MemoryUsage » comme entrée.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Bureau |
d’en-tête | prcomoem.h (include Prcomoem.h) |