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

La valeur retournée dans le membre dwPercentMemoryUsage 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 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)

Voir aussi

DEVOBJ

IPrintOemUni

IPrintOemUni ::ImageProcessing

OEMMEMORYUSAGE