Condividi tramite


Struttura dei dati FORM_INFO_2

Lo spooler di stampa e il driver della stampante Unidrv sono migliorati in Windows Vista per offrire un supporto migliore dei moduli stampanti in ambienti multilingue. Lo spooler supporta stringhe MUI (Multi-Language User Interface) per i nomi visualizzati del modulo e la nuova struttura di dati FORM_INFO_2 per includere le informazioni aggiuntive necessarie per supportare le stringhe MUI.

La struttura dei dati FORM_INFO_1 è definita come segue.

typedef struct _FORM_INFO_1 { 
  DWORD  Flags; 
  LPTSTR  pName; 
  SIZEL   Size; 
  RECTL   ImageableArea; 
} FORM_INFO_1, *PFORM_INFO_1;

In FORM_INFO_1, il membro pName è l'unico campo stringa, quindi è possibile usarlo per creare il nome della chiave usato dalle routine di ricerca interne per individuare i moduli nel database interno e anche come nome visualizzato visualizzato agli utenti finali.

La struttura FORM_INFO_2, definita nell'esempio di codice seguente, aggiunge campi aggiuntivi per fornire supporto 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 aggiunge il membro pKeyword per abilitare l'aggiunta di una parola chiave distinct, che può essere diversa dal nome visualizzato.

Questa struttura consente anche di aggiungere la DLL della risorsa e l'ID risorsa al database forms usando il membro pMuiDll e dwResourceId. Quando il membro StringType ha il valore di STRING_MUIDLL e i membri pMuiDll e dwResourceId contengono la DLL della risorsa e l'identificatore del nome visualizzato, la funzione AddForm nello spooler cerca il nome visualizzato nella DLL e lo registra internamente. Quando la funzione GetForm o EnumForms viene chiamata con un valore Level pari a 2, le informazioni restituite nella struttura FORM_INFO_2 conterranno il nome visualizzato a cui fa riferimento pDisplayName e l'ID lingua corrispondente in wLangID.

I driver della stampante che continuano a usare la struttura FORM_INFO_1 quando chiamano AddForm archivieranno solo le informazioni presenti in tale struttura nel database dei moduli. I membri della struttura FORM_INFO_2 non trovati nella struttura FORM_INFO_1 saranno NULL o 0 quando viene eseguita una query a GetForm o EnumForms che restituisce una struttura FORM_INFO_2.

Per altre informazioni sull'aggiunta di moduli stampanti e sull'uso delle strutture di dati FORM_INFO_1 e FORM_INFO_2, vedere la documentazione di Microsoft Windows SDK.