Sekcja Stringów INF

Plik INF musi zawierać co najmniej jedną sekcję Ciągi , aby zdefiniować każdy %strkey% token określony gdzie indziej w tym indziej indziej.

[Strings] | 
[Strings.LanguageID] ...
 
strkey1 = ["]some string["]
strkey2 = "    string-with-leading-or-trailing-whitespace     "  | 
          "very-long-multiline-string" | 
          "string-with-semicolon" | 
          "string-ending-in-backslash" |
          ""double-quoted-string-value""
 ...

Wpisy

strkey1, strkey2, ...
Każdy klucz ciągu w pliku INF musi określać unikatową nazwę składającą się z liter, cyfr i/lub innych jawnie widocznych znaków. Znak % w ramach takiego tokenu strkey musi być wyrażony jako %%.

| ciąg"jakiś ciąg"
Określa ciąg, opcjonalnie rozdzielany znakiem podwójnego cudzysłowu ("), który zawiera litery, cyfry, znaki interpunkcyjne, a nawet niektóre niejawnie widoczne znaki, w szczególności spację wewnętrzną i/lub znaki tabulatora. Jednak ciąg bez cudzysłowu nie może zawierać wewnętrznego podwójnego cudzysłowu ("), średnika (;), kanału wiersza, zwracania ani żadnych niewidocznych znaków sterujących i nie może mieć ukośnika odwrotnego () jako końcowego znaku.

"* ciąg-with-leading-or-trailing-whitespace* " |

"bardzo długi ciąg wielowierszowy" |

"string-with-semicolon" |

"ciąg-end-in-backslash" |

""double-quoted-string-value""
Wartość określona dla tokenu% %strkeymusi być ujęta w znaki podwójnego cudzysłowu ("), jeśli spełnia którykolwiek z następujących kryteriów:

  • Jeśli określony ciąg ma znak wiodący lub końcowy biały, który musi być zachowany jako część jego wartości, ten ciąg musi być ujęta w znaki podwójnego cudzysłowu, aby zapobiec odrzuceniu przez analizator INF wiodących i/lub końcowych białych znaków.

  • Jeśli długi ciąg może zawierać jakiekolwiek znaki wewnętrznego kanału wiersza lub zwracane ze względu na zawijanie wierszy w edytorze tekstów, należy go również ujęć w podwójny cudzysłów, aby zapobiec obcięciu ciągu w początkowym wewnętrznym kanale wiersza lub zwracaniu znaku.

  • Jeśli taki ciąg zawiera średnik, musi być ujęty w podwójny cudzysłów, aby zapobiec obcięciu ciągu na średniku. (Jak wspomniano już w sekcji Ogólne reguły składni dla plików INF, średnik rozpoczyna każdy komentarz w plikach INF).

  • Jeśli taki ciąg kończy się ukośnikiem odwrotnym, musi być ujęta w podwójny cudzysłów, aby zapobiec połączeniu ciągu z następnym wpisem. (Jak wspomniano już w ogólnych regułach składni dla plików INF, znak ukośnika odwrotnego () jest używany jako kontynuator linii w plikach INF.

  • Podobnie jak specyfikacja ciągu bez cudzysłowu, taka "ciąg cytowany" nie może zawierać wewnętrznych znaków podwójnego cudzysłowu. Można jednak określić ją jako jawnie cytowaną wartość ciągu przy użyciu co najmniej jednej dodatkowej pary podwójnych znaków cudzysłowu (na przykład "jakiś ciąg"").

    Analizator INF nie tylko odrzuca najbardziej zewnętrzną parę ujętych podwójnych cudzysłowów dla każdego "ciągu cytowanego" w tej sekcji, ale także kondensuje każdą kolejną sekwencyjną parę podwójnych cudzysłowów w jeden podwójny znak cudzysłowu.

    Na przykład ciąg ""some string""" również staje się ciągiem "some string", gdy jest analizowany.

Podsumowując, każdy ciąg musi być ujęta w parę znaków podwójnego cudzysłowu ("), jeśli którykolwiek z następujących znaków jest spełniony:

  • Ciąg zawiera wiodące lub końcowe białe znaki.
  • Ciąg jest tak długi, że opakowuje wiersz.
  • Ciąg zawiera średnik lub końcowy znak ukośnika odwrotnego.
  • Sam ciąg jest ciągiem cytowanym.

Analizator INF systemu odrzuca najbardziej zewnętrzną parę znaków podwójnego cudzysłowu rozdzielając taki ciąg wraz z dowolnymi wiodącymi lub końcowymi znakami odstępu poza ogranicznikami ciągu podwójnego cudzysłowu.

Remarks

Ponieważ analizator INF systemu usuwa najbardziej zewnętrzną parę otaczających znaki podwójnego cudzysłowu z dowolnego "ciągu cytowanego", definiując token %strkey%, wiele plików systemowych INF definiuje wszystkie %strkey% tokeny jako "cytowane ciągi", aby uniknąć niezamierzonej utraty wiodących i końcowych białych znaków podczas analizowania INF. Użycie ciągu "quoted string" zapewnia również, że szczególnie długie wartości ciągów, które zawijają się między wierszami, nie mogą być obcięte, a ciągi z końcem ukośników odwrotnych nie mogą być łączone do następnego wiersza w pliku INF.

Aby utworzyć pojedynczy międzynarodowy plik INF, inf może mieć zestaw ciągów specyficznych dla ustawień regionalnych.Sekcje LanguageID, jak pokazano w formalnej instrukcji składni. Rozszerzenie LanguageID to 4-cyfrowa wartość szesnastkowa (bez wiodącego "0x"), która jest zdefiniowana w następujący sposób:

  • Dolne 10 bitów zawierają identyfikator języka podstawowego, a następne 6 bitów zawierają identyfikator podjęzyczności, jak określono w makrze MAKELANGID zdefiniowanym w pliku Winnt.h.
  • Identyfikatory języka i podjęzyczności muszą być zgodne z wartościami zdefiniowanymi przez system wartości win32 LANG_XXX i SUBLANG_XXX zdefiniowanymi w pliku Winnt.h.

Na przykład wartość LanguageID 0407 reprezentuje identyfikator języka podstawowego LANG_GERMAN (07) z identyfikatorem podrzędnym SUBLANG_GERMAN (01), takim jak w poniższym przykładzie:

[Strings]              ; No language ID implies English
DiskName="My Excellent Software"
LocaleSubDir="English"

[Strings.0407]         ; 0407 is the language ID for German
DiskName="Meine ausgezeichnete Software"
LocaleSubDir="German"

Plik INF może zawierać tylko jedną sekcję Ciągi wraz z jednym ciągiem.Sekcja LanguageID dla każdej wartości LanguageID.

Windows wybiera pojedynczą sekcję Ciągi, która służy do tłumaczenia wszystkich tokenów %strkey% na potrzeby instalacji. W zależności od bieżących ustawień regionalnych określonego komputera Windows wybiera sekcję Ciągi w następujący sposób:

  1. Windows najpierw szuka elementu . Wartości LanguageID w INF zgodne z bieżącymi ustawieniami regionalnymi przypisanymi do komputera. Jeśli zostanie znalezione dokładne dopasowanie, Windows używa tych ciągów.Identyfikator języka Sekcja INF umożliwiająca tłumaczenie wszystkich tokenów %strkey% zdefiniowanych w inf.

    Należy zduplikować wszystkie tokeny ciągów we wszystkich ciągach.* sekcje, nawet stałe/liczbowe, które nie muszą być zlokalizowane.

  2. W przeciwnym razie Windows wyszuka dopasowanie wartości LANG_XXX z wartością SUBLANG_NEUTRAL jako SUBLANG_XXX. Jeśli takie dopasowanie zostanie znalezione, Windows używa tej sekcji INF do tłumaczenia wszystkich %strkey% tokenów zdefiniowanych w inf.

  3. W przeciwnym razie Windows szuka dopasowania do wartości LANG_XXX i wszystkich prawidłowych SUBLANG_XXX dla tej samej rodziny LANG_XXX. Jeśli zostanie znalezione takie częściowe dopasowanie, użyj tych ciągów.Identyfikator języka Sekcja INF umożliwiająca tłumaczenie wszystkich tokenów% %strkey zdefiniowanych w inf.

  4. W przeciwnym razie Windows używa sekcji Ciągi nieumarłe do tłumaczenia wszystkich tokenów %strkey% zdefiniowanych w inf.

Zgodnie z konwencją i dla wygody podczas tworzenia zestawu plików INF dla rynku międzynarodowego sekcje Ciągi są ostatnimi w ramach wszystkich systemowych plików INF. Używanie %tokenów strkey% dla wszystkich wartości ciągów widocznych przez użytkownika w inf i umieszczanie ich w sekcjach ciągów ustawień regionalnych upraszcza tłumaczenie takich ciągów. Aby uzyskać więcej informacji na temat plików INF specyficznych dla ustawień regionalnych, zobacz Creating International INF Files (Tworzenie międzynarodowych plików INF).

Mimo że sekcje Ciągi są ostatnimi sekcjami w każdym pliku INF, wszystkie określone %strkey% token zdefiniowany w sekcji Ciągi mogą być używane wielokrotnie w innych miejscach inf, w szczególności wszędzie tam, gdzie wymagana jest przetłumaczona wartość tego tokenu. Funkcje SetupAPI rozszerzają każdy %strkey% token do określonego ciągu, a następnie używają tej rozszerzonej wartości do dalszego przetwarzania INF.

Użycie tokenów %strkey% w plikach INF nie jest ograniczone do wartości ciągów widocznych dla użytkownika. Te tokeny mogą być używane w dowolny sposób wygodny dla modułu zapisywania INF, o ile każdy token jest zdefiniowany w sekcji Ciągi . Na przykład podczas pisania pliku INF, który wymaga specyfikacji kilku identyfikatorów GUID, może być wygodne utworzenie %strkey% token dla każdego identyfikatora GUID, używając znaczącej nazwy jako podstawy dla każdej takiej wartości identyfikatora GUID.

Określenie zestawu % wartości strkey% = "{GUID}" w sekcji Ciągi pliku INF wymaga wpisania każdej jawnej wartości identyfikatora GUID tylko raz. Może to pomóc w zapewnieniu bardziej czytelnej wewnętrznej dokumentacji INF niż przy użyciu jawnych wartości identyfikatora GUID w pliku INF.

Wszystkie tokeny% strkey %muszą być zdefiniowane w pliku INF, do którego się odwołuje. W związku z tym w przypadku każdego pliku INF, który zawiera wpisy Include and Needs , uwzględniony inf musi mieć własną sekcję Ciągi , aby zdefiniować wszystkie %strkey% tokeny, do których odwołuje się ten INF.

W sekcji Ciągi INF maksymalna długość ciągu podstawienia, w znakach, łącznie z znakiem zakończenia null, wynosi 4096 (Windows Vista i nowsze wersje Windows) i 512 (Windows Server 2003, Windows XP i Windows 2000). Po podstawieniu ciągu maksymalna długość ciągu w znakach ciągu pliku INF wynosi 4096, w tym znak null zakończenia.

Examples

W poniższym przykładzie pokazano fragment sekcji Ciągi z dostarczonego przez system ustawień regionalnych dvd.inf dla instalacji w krajach/regionach języka angielskiego.

[Strings]
Msft="Microsoft"
MfgToshiba="Toshiba"
Tosh404.DeviceDesc="Toshiba DVD decoder card"
; ... 

W poniższym przykładzie pokazano łączenie ciągów.

[OEM Windows System Component Verification]
OID = 1.3.6.1.4.1.311.10.3.7    ; WHQL OEM OID 
Notice = "%A% %B% %C% %D% %E%" 
[Strings]
A = "This certificate is used to sign untested drivers that have not passed the Windows Hardware Quality Labs (WHQL) testing process."
B = "This certificate and drivers signed with this certificate are intended for use in test environments only, and are not intended for use in any other context."
C = "Vendors who distribute this certificate or drivers signed with this certificate outside a test environment may be in violation of their driver signing agreement."
D = "Vendors who have their drivers signed with this certificate do so at their own risk." 
E = "In particular, Microsoft assumes no liability for any damages that may result from the distribution of this certificate or drivers signed with this certificate outside the test environment described in a vendor's driver signing agreement."

Informacje dodatkowe

DDInstall

DDInstall. CoInstallers

DDInstall. HW

DDInstall. Interfejsy

DDInstall. Usługi

Producent

InterfaceInstall32

Modele

SourceDisksNames

Wersja