Поделиться через


Структура данных 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.