Fonction DrvLoadFontFile (winddi.h)
La fonction DrvLoadFontFile reçoit des informations de GDI relatives au chargement et au mappage des fichiers de police.
Syntaxe
ULONG_PTR DrvLoadFontFile(
ULONG cFiles,
ULONG_PTR *piFile,
PVOID *ppvView,
ULONG *pcjView,
DESIGNVECTOR *pdv,
ULONG ulLangID,
ULONG ulFastCheckSum
);
Paramètres
cFiles
Valeur fournie par l’appelant indiquant le nombre de fichiers associés à la police.
piFile
Pointeur fourni par l’appelant vers un tableau de handles de fichiers de taille cFiles. Chaque handle représente l’un des fichiers associés à la police. Les handles de fichier peuvent être transmis individuellement à EngMapFontFileFD.
ppvView
Pointeur fourni par l’appelant vers un tableau de taille cFiles contenant l’adresse de départ de l’espace mémoire dans lequel chaque fichier de police a été mappé.
pcjView
Pointeur fourni par l’appelant vers un tableau de taille cFiles contenant la taille de l’espace mémoire dans lequel chaque fichier de police a été mappé.
pdv
Pour les polices Adobe Multiple Master, il s’agit d’un pointeur fourni par l’appelant vers une structure DESIGNVECTOR (décrite dans la documentation Microsoft Windows SDK) qui identifie les instance multiples maîtres. Sinon, ce paramètre a la valeur NULL.
ulLangID
Identificateur de langue fourni par l’appelant, obtenu à partir du Registre.
ulFastCheckSum
Spécifie une somme de contrôle fournie par GDI pour la police. Si ce paramètre est différent de zéro, le moteur de cache de police GDI peut être utilisé afin d’accéder à une police plus rapidement. Si ce paramètre est égal à zéro, le moteur de police GDI ne peut pas être utilisé.
Valeur retournée
Si l’opération réussit, elle doit retourner un pointeur vers une valeur définie par le pilote qui identifie de manière unique la police. Le pilote reçoit ensuite ce pointeur en tant que paramètre d’entrée vers des fonctions telles que DrvQueryFont, DrvQueryFontFile, DrvQueryFontTree. Si une erreur est rencontrée, la fonction doit retourner HFF_INVALID.
Remarques
Les pilotes de police sont nécessaires pour fournir une fonction DrvLoadFontFile . L’objectif de la fonction est de permettre à un pilote de police de recevoir une notification indiquant que les fichiers associés d’une police sont chargés et mappés. Le pilote peut stocker des arguments d’entrée pour une utilisation ultérieure.
Le chargement et le mappage d’un fichier de police implique d’appeler EngMapFontFileFD. Lorsqu’une application appelle AddFontResource ou AddFontResourceEx (décrit dans la documentation SDK Windows), GDI appelle EngMapFontFileFD, puis appelle DrvLoadFontFile. Les paramètres ppvView et pcjView de la fonction DrvLoadFontFile fournissent l’emplacement et la taille du mappage de chaque fichier, comme retourné par EngMapFontFileFD.
GDI annule le mappage des fichiers lorsque DrvLoadFontFile retourne. Si le pilote doit remapper les fichiers ultérieurement, en réponse aux appels suivants de GDI, il peut appeler EngMapFontFileFD lui-même s’il a enregistré les paramètres cFiles et piFile .
Lorsque le moteur de police GDI appelle le DDI DrvLoadFontFile du pilote de police, il transmet une somme de contrôle pour la police dans le paramètre ulFastCheckSum . Si ce paramètre n’est pas nul et que la police en question a été mise en cache, DrvLoadFontFile peut obtenir un pointeur vers les données de police avec un appel à EngFntCacheLookUp. Une fois que le pilote de police a obtenu le pointeur vers les données de police, il peut charger les données de police. Si la police n’a pas été mise en cache, le pilote de police peut mettre en cache la police en allouant d’abord la mémoire pour le cache de polices, en utilisant un appel à EngFntCacheAlloc, puis en écrivant les données de police dans cette mémoire. Si le pilote de police rencontre une erreur lors de la lecture ou de l’écriture des données de police, il peut notifier le moteur de police GDI en effectuant un appel à EngFntCacheFault.
Si le moteur de police GDI appelé DrvLoadFontFile a passé une valeur de zéro pour le paramètre ulFastCheckSum , cela signifie que le moteur de police GDI n’est pas en fonctionnement et que le pilote de police n’a pas besoin d’effectuer une action.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | winddi.h (inclure Winddi.h) |