Структура данных FORM_INFO_2
Очередь печати печати и драйвер принтера Unidrv улучшены в Windows Vista, чтобы обеспечить лучшую поддержку форм принтеров в многоязыковых средах. Диспетчер очереди поддерживает строки многоязыкового пользовательского интерфейса (MUI) для отображаемых имен форм, а новый FORM_INFO_2 структуру данных, чтобы включить дополнительные сведения, необходимые для поддержки строк MUI.
Структура данных FORM_INFO_1 определяется следующим образом.
typedef struct _FORM_INFO_1 {
DWORD Flags;
LPTSTR pName;
SIZEL Size;
RECTL ImageableArea;
} FORM_INFO_1, *PFORM_INFO_1;
В FORM_INFO_1 элемент pName является единственным строковым полем, поэтому его можно использовать для создания имени ключа, используемого внутренними подпрограммами поиска для поиска форм во внутренней базе данных, а также в качестве отображаемого имени, отображаемого конечным пользователям.
Структура FORM_INFO_2, определенная в следующем примере кода, добавляет дополнительные поля для поддержки MUI.
typedef struct _FORM_INFO_2 {
DWORD Flags;
LPTSTR pName;
SIZEL Size;
RECTL ImageableArea;
LPCSTR pKeyword;
DWORD StringType;
LPCTSTR pMuiDll;
DWORD dwResourceId;
LPCTSTR pDisplayName;
LANGID wLangId;
} FORM_INFO_2, *PFORM_INFO_2;
FORM_INFO_2 добавляет элемент pKeyword, чтобы добавить отдельный ключевое слово, который может отличаться от отображаемого имени.
Эта структура также позволяет добавить библиотеку DLL ресурса и идентификатор ресурса в базу данных forms с помощью элемента pMuiDll и dwResourceId. Если элемент StringType имеет значение STRING_MUIDLL а члены pMuiDll и dwResourceId содержат библиотеку DLL ресурса и идентификатор отображаемого имени, функция AddForm в очереди очереди выполняет поиск отображаемого имени в библиотеке DLL и записывает его внутренне. При вызове функции GetForm или EnumForms со значением Level 2 информация, возвращаемая в структуре FORM_INFO_2, будет содержать отображаемое имя, на которое ссылается pDisplayName, и соответствующий идентификатор языка в wLangID.
Драйверы принтеров, которые продолжают использовать структуру FORM_INFO_1 при вызове AddForm, будут хранить в базе данных forms только те сведения, которые находятся в этой структуре. Элементы в структуре FORM_INFO_2, которые не найдены в структуре FORM_INFO_1, будут иметь значение NULL или 0 при запросе вызова GetForm или EnumForms, возвращающего структуру FORM_INFO_2.
Дополнительные сведения о добавлении форм принтера и использовании структур данных FORM_INFO_1 и FORM_INFO_2 см. в документации по Microsoft Windows SDK.