Méthode IPrintOemUni ::MemoryUsage (prcomoem.h)
La IPrintOemUni::MemoryUsage
méthode 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 retournée
La méthode doit retourner l’une des valeurs suivantes.
Code de retour | Description |
---|---|
|
L’opération a réussi. |
|
L'opération a échoué. |
|
Cette méthode n'est pas implémentée. |
Remarques
L’objectif IPrintOemUni::MemoryUsage
de la méthode est d’aider le pilote Unidrv à déterminer la taille optimale de la surface de dessin GDI, en fonction des exigences de mémoire de la méthode IPrintOemUni ::ImageProcessing . L’implémentation de la IPrintOemUni::MemoryUsage
méthode est facultative.
La IPrintOemUni::MemoryUsage
méthode doit retourner deux valeurs, comme suit :
-
Quantité de mémoire allouée de manière permanente et de taille 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 après la fin du traitement de la méthode IPrintOemUni ::ImageProcessing .
Le plug-in de rendu retourne cette bitmap traitée à Unidrv, ou la met en file d’attente. La quantité de mémoire nécessaire pour stocker l’image bitmap traitée est retournée dans le membre dwPercentMemoryUsage de la structure OEMMEMORYUSAGE, et est exprimée en pourcentage de la taille de la bitmap source.
Le membre dwMaxBandSize de la structure OEMMEMORYUSAGE est fourni par Unidrv et spécifie la taille de bande maximale par défaut.
Avant que le pilote Unidrv ne crée une surface de dessin, il demande à GDI de déterminer la taille optimale pour les 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 bandes, entre une bitmap source qui est passée à la méthode IPrintOemUni ::ImageProcessing et une bitmap traitée (généralement plus petite) que la méthode retourne ou génère. Unidrv appelle la méthode du IPrintOemUni::MemoryUsage
plug-in de rendu, si elle existe, et utilise le résultat pour calculer la meilleure façon 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 (contenue dans le membre dwMaxBandSize de la structure OEMMEMORYUSAGE), tandis que la méthode du IPrintOemUni::MemoryUsage
plug-in de rendu retourne des valeurs de zéro pour dwFixedMemoryUsage et de 50 pour dwPercentMemoryUsage. La valeur 50 signifie que les bitmaps de sortie de la méthode IPrintOemUni ::ImageProcessing seront 50 % plus petites que les bitmaps sources. Par conséquent, Unidrv alloue une taille de bitmap source de 4 mégaoctets, ce qui fait que les bitmaps de sortie sont de 2 mégaoctets.
Si aucune IPrintOemUni::MemoryUsage
méthode n’est 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é à 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 IPrintOemUni::MemoryUsage
méthode, il en résulte que plus de mémoire est allouée aux bitmaps que la taille optimale disponible, ce qui peut entraîner une dégradation des performances.
La IPrintOemUni::MemoryUsage
méthode est facultative. Si un plug-in de rendu implémente cette méthode, la méthode IPrintOemUni ::GetImplementedMethod du plug-in doit retourner S_OK lorsqu’il reçoit « MemoryUsage » comme entrée.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | prcomoem.h (include Prcomoem.h) |