Функция DrvLoadFontFile (winddi.h)
Функция DrvLoadFontFile получает из GDI сведения, связанные с загрузкой и сопоставлением файлов шрифтов.
Синтаксис
ULONG_PTR DrvLoadFontFile(
ULONG cFiles,
ULONG_PTR *piFile,
PVOID *ppvView,
ULONG *pcjView,
DESIGNVECTOR *pdv,
ULONG ulLangID,
ULONG ulFastCheckSum
);
Параметры
cFiles
Предоставленное вызывающим объектом значение, указывающее количество файлов, связанных со шрифтом.
piFile
Предоставленный вызывающим элементом указатель на массив дескрипторов файлов размера cFiles. Каждый дескриптор представляет один из файлов, связанных со шрифтом. Дескрипторы файлов могут передаваться по отдельности в EngMapFontFileFD.
ppvView
Предоставленный вызывающим элементом указатель на массив размера cFiles, содержащий начальный адрес пространства памяти, с которым сопоставлен каждый файл шрифта.
pcjView
Предоставленный вызывающим элементом указатель на массив размера cFiles, содержащий размер пространства памяти, с которым сопоставлен каждый файл шрифта.
pdv
Для шрифтов Adobe Multiple Master это предоставленный вызывающим элементом указатель на структуру DESIGNVECTOR (описанную в документации по Microsoft Windows SDK), идентифицируя экземпляр нескольких источников. В противном случае этот параметр имеет значение NULL.
ulLangID
Идентификатор языка, предоставленный вызывающим абонентом, полученный из реестра.
ulFastCheckSum
Указывает предоставленную GDI контрольную сумму для шрифта. Если этот параметр не равен нулю, можно использовать обработчик кэша шрифтов GDI, чтобы быстрее получить доступ к шрифту. Если этот параметр равен нулю, обработчик шрифтов GDI использовать нельзя.
Возвращаемое значение
Если операция завершается успешно, она должна вернуть указатель на определенное драйвером значение, которое однозначно идентифицирует шрифт. Впоследствии драйвер получает этот указатель в качестве входного параметра для таких функций, как DrvQueryFont, DrvQueryFontFile, DrvQueryFontTree. При обнаружении ошибки функция должна вернуть HFF_INVALID.
Комментарии
Драйверы шрифтов необходимы для предоставления функции DrvLoadFontFile . Функция предназначена для того, чтобы разрешить драйверу шрифта получать уведомления о загрузке и сопоставлении связанных файлов шрифта. Драйвер может хранить входные аргументы для последующего использования.
Загрузка и сопоставление файла шрифта влечет за собой вызов EngMapFontFileFD. Когда приложение вызывает AddFontResource или AddFontResourceEx (описано в документации по Windows SDK), GDI вызывает EngMapFontFileFD, а затем вызывает DrvLoadFontFile. Параметры ppvView и pcjView функции DrvLoadFontFile предоставляют расположение и размер сопоставления каждого файла, возвращенные EngMapFontFileFD.
GDI отменяет сопоставление файлов при возврате DrvLoadFontFile . Если драйверу потребуется повторно сопоставить файлы позже, в ответ на последующие вызовы из GDI, он может вызвать сам EngMapFontFileFD , если он сохранил параметры cFiles и piFile .
Когда обработчик шрифтов GDI вызывает DDI DrvLoadFontFile драйвера шрифта, он передает контрольную сумму для шрифта в параметре ulFastCheckSum . Если этот параметр не равен нулю и рассматриваемый шрифт кэширован, DrvLoadFontFile может получить указатель на данные шрифта с помощью вызова EngFntCacheLookUp. После того как драйвер шрифта получит указатель на данные шрифта, он может загрузить данные шрифта. Если шрифт не был кэширован, драйвер шрифта может кэшировать шрифт, сначала выделяя память для кэша шрифтов, используя вызов EngFntCacheAlloc, а затем записывая данные шрифта в память. Если драйвер шрифта обнаруживает ошибку при чтении или записи данных шрифта, он может уведомить обработчик шрифтов GDI, выполнив вызов EngFntCacheFault.
Если обработчик шрифтов GDI вызвал DrvLoadFontFile и передал нулевое значение для параметра ulFastCheckSum , это означает, что обработчик шрифтов GDI не работает, и драйверу шрифта не нужно предпринимать никаких действий.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | winddi.h (включая Winddi.h) |