Partager via


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
S_OK
L’opération a réussi.
E_FAIL
L’opération a échoué.
E_NOTIMPL
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.

La valeur retournée dans la dwPercentMemoryUsage membre doit inclure, en plus de la taille de la bitmap traitée, la quantité d’allocations de mémoire supplémentaires qui dépendent 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)

Voir aussi

DEVOBJ

IPrintOemUni

IPrintOemUni ::ImageProcessing

OEMMEMORYUSAGE