Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een INF-bestand moet ten minste één tekenreekssectie hebben om elke %strkey -% token te definiëren dat elders in die INF is opgegeven.
[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""
...
Invoer
strkey1, strkey2, ...
Elke tekenreekssleutel in een INF-bestand moet een unieke naam opgeven die bestaat uit letters, cijfers en/of andere expliciet zichtbare tekens. Een % teken binnen een dergelijk strkey-token moet worden uitgedrukt als %%.
een tekenreeks | "een tekenreeks"
Hiermee geeft u een tekenreeks op, eventueel gescheiden door dubbele aanhalingstekens ("), die letters, cijfers, leestekens en mogelijk zelfs bepaalde impliciet zichtbare tekens, met name interne spatie en/of tabtekens, bevat. Een niet-aanhalingstekenreeks mag echter geen interne dubbele aanhalingstekens ("), puntkomma (;), regelfeed, return of onzichtbare besturingstekens bevatten, en kan geen backslash () hebben als laatste teken.
"* string-with-leading-or-trailing-whitespace* " |
"very-long-multiline-string" |
"tekenreeks-end-in-backslash" |
""double-quoted-string-value""
De waarde die is opgegeven voor een %strkey% token moet tussen dubbele aanhalingstekens (") staan als deze voldoet aan een van de volgende criteria:
Als een opgegeven tekenreeks voorloop- of volgspaties bevat die als onderdeel van de waarde moeten worden bewaard, moet deze tekenreeks tussen dubbele aanhalingstekens worden geplaatst om te voorkomen dat de voorloop- en/of volgspaties worden verwijderd door de INF-parser.
Als een lange tekenreeks interne regelfeed of retourtekens kan bevatten vanwege regelterugloop in de teksteditor, moet deze ook tussen dubbele aanhalingstekens worden geplaatst om afkapping van de tekenreeks bij de initiële interne regelfeed of het retourteken te voorkomen.
Als een dergelijke tekenreeks een puntkomma bevat, moet deze tussen dubbele aanhalingstekens worden geplaatst om te voorkomen dat de tekenreeks wordt afgekapt op de puntkomma. (Zoals al vermeld in algemene syntaxisregels voor INF-bestanden, begint het puntkommateken elke opmerking in INF-bestanden.)
Als een dergelijke tekenreeks eindigt in een backslash, moet deze tussen dubbele aanhalingstekens worden geplaatst om te voorkomen dat de tekenreeks wordt samengevoegd met de volgende vermelding. (Zoals al vermeld in algemene syntaxisregels voor INF-bestanden, wordt het backslash-teken () gebruikt als de regel continuator in INF-bestanden.)
Net als bij een niet-aanhalingstekens mag een dergelijke 'aanhalingstekens' geen interne dubbele aanhalingstekens bevatten. Het kan echter worden opgegeven als een expliciete tekenreekswaarde tussen dubbele aanhalingstekens met een of meer extra paar dubbele aanhalingstekens (bijvoorbeeld ''een tekenreeks').
De INF-parser negeert niet alleen het buitenste paar dubbele aanhalingstekens voor elke 'aanhalingstekenreeks' in deze sectie, maar condenseert ook elk volgend opeenvolgend paar dubbele aanhalingstekens in één dubbel aanhalingsteken.
Zo wordt '''sommige tekenreeks' ook 'een tekenreeks' wanneer deze wordt geparseerd.
Om samen te vatten, moet elke tekenreeks tussen twee dubbele aanhalingstekens (") staan als een van de volgende tekens waar is:
- De tekenreeks bevat voorloop- of volgspaties.
- De tekenreeks is zo lang dat de lijn terugloopt.
- De tekenreeks bevat een puntkomma of een laatste backslashteken.
- De tekenreeks zelf is een tekenreeks tussen aanhalingstekens.
De INF-parser van het systeem verwijdert het buitenste paar dubbele aanhalingstekens dat een dergelijke tekenreeks met scheidingstekens tussen dubbele aanhalingstekens plaatst, samen met voorloop- of volgspaties buiten de tekenreeksscheidingstekens tussen dubbele aanhalingstekens.
Remarks
Omdat de INF-parser van het systeem het buitenste paar dubbele aanhalingstekens van een 'aanhalingstekenreeks' verwijdert die een %strkey% token definieert, definiëren veel van de INF-bestanden van het systeem alle %strkey% tokens als 'aanhalingstekenreeks's om onbedoeld verlies van voorloop- en volgspaties tijdens inF-parsering te voorkomen. Het gebruik van 'aanhalingstekenreeksen' zorgt er ook voor dat met name lange tekenreekswaarden die tussen regels worden verpakt, niet kunnen worden afgekapt en dat tekenreeksen met eindslashes niet kunnen worden samengevoegd met de volgende regel in het INF-bestand.
Als u één internationaal INF-bestand wilt maken, kan een INF een set landinstellingenspecifieke tekenreeksen hebben.LanguageID-secties , zoals weergegeven in de formele syntaxisinstructie. De LanguageID-extensie is een hexadecimale waarde van 4 cijfers (zonder voorloop "0x") die als volgt is gedefinieerd:
- De lagere 10 bits bevatten de primaire taal-id en de volgende 6 bits bevatten de subtaal-id, zoals opgegeven door de MAKELANGID-macro die is gedefinieerd in Winnt.h.
- De taal- en subtaal-id's moeten overeenkomen met de door het systeem gedefinieerde waarden van de Win32-LANG_XXX - en SUBLANG_XXX-constanten die zijn gedefinieerd in Winnt.h.
Een LanguageID-waarde van 0407 vertegenwoordigt bijvoorbeeld een primaire taal-id van LANG_GERMAN (07) met een subtaal-id van SUBLANG_GERMAN (01), zoals in het volgende voorbeeld:
[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"
Een INF-bestand kan slechts één tekenreekssectie bevatten, samen met één tekenreeks.De sectie LanguageID voor elke LanguageID-waarde .
Windows selecteert één tekenreekssectie die wordt gebruikt om alle %strkey-% tokens voor de installatie te vertalen. Afhankelijk van de huidige landinstelling van een bepaalde computer, selecteert Windows op de volgende manier een sectie Tekenreeksen:
Windows zoekt eerst naar de . LanguageID-waarden in de INF die overeenkomen met de huidige landinstelling die aan de computer is toegewezen. Als er een exacte overeenkomst wordt gevonden, Windows die tekenreeksen gebruikt.LanguageID INF-sectie voor het vertalen van alle %strkey% tokens die zijn gedefinieerd in de INF.
U moet alle tekenreekstokens dupliceren voor alle tekenreeksen.* secties, zelfs numerieke/vaste constanten die niet hoeven te worden gelokaliseerd.
Anders zoekt Windows volgende naar een overeenkomst met de LANG_XXX-waarde met de waarde van SUBLANG_NEUTRAL als de SUBLANG_XXX. Als een dergelijke overeenkomst wordt gevonden, gebruikt Windows die INF-sectie om alle %strkey% tokens te vertalen die zijn gedefinieerd in de INF.
Anders zoekt Windows hierna naar een overeenkomst met de LANG_XXX-waarde en een geldige SUBLANG_XXX voor dezelfde LANG_XXX-familie. Als een dergelijke gedeeltelijke overeenkomst wordt gevonden, gebruikt u die tekenreeksen.LanguageID INF-sectie voor het vertalen van alle %strkey% tokens die zijn gedefinieerd in de INF.
Anders gebruikt Windows de sectie niet-geconconseerde tekenreeksen om alle %strkey-% tokens te vertalen die zijn gedefinieerd in de INF.
Volgens de conventie en voor het gemak bij het maken van een set INF-bestanden voor de internationale markt, zijn tekenreekssecties de laatste binnen alle SYSTEEM INF-bestanden. Het gebruik van %strkey% tokens voor alle door de gebruiker zichtbare tekenreekswaarden in een INF en het plaatsen ervan in secties per landinstelling , vereenvoudigt de vertaling van dergelijke tekenreeksen. Zie Internationale INF-bestanden maken voor meer informatie over landspecifieke INF-bestanden.
Hoewel tekenreekssecties de laatste secties in elk INF-bestand zijn, kunnen opgegeven %strkey% token dat is gedefinieerd in een sectie Tekenreeksen herhaaldelijk elders in het INF worden gebruikt, met name waar de vertaalde waarde van dat token vereist is. De SetupAPI-functies vouwen elke %strkey% token uit naar de opgegeven tekenreeks en gebruiken vervolgens die uitgebreide waarde voor verdere INF-verwerking.
Het gebruik van %strkey% tokens in INF-bestanden is niet beperkt tot door de gebruiker zichtbare tekenreekswaarden. Deze tokens kunnen op elke manier worden gebruikt die handig is voor de INF-schrijver, zolang elk token is gedefinieerd in een sectie Tekenreeksen . Wanneer u bijvoorbeeld een INF-bestand schrijft waarvoor de specificatie van verschillende GUID's is vereist, kan het handig zijn om een %strkey -% token te maken voor elke GUID, door een betekenisvolle naam te gebruiken als vervanging voor elke dergelijke GUID-waarde.
Als u een set %strkey -% = {GUID} -waarden opgeeft in de sectie Tekenreeksen van het INF-bestand, moet u elke expliciete GUID-waarden slechts één keer typen. Dit kan helpen bij het bieden van meer leesbare interne INF-documentatie dan met behulp van expliciete GUID-waarden in het INF-bestand.
Alle %strkey -%-tokens moeten worden gedefinieerd in het INF-bestand waarnaar wordt verwezen. Daarom moet voor elk INF-bestand met vermeldingen opnemen en behoeften een opgenomen INF een eigen sectie Tekenreeksen hebben om alle %strkey -% tokens te definiëren waarnaar in die INF wordt verwezen.
In een sectie INF-tekenreeksen is de maximale lengte, in tekens, van een vervangingstekenreeks, inclusief een afsluit-NULL-teken, 4096 (Windows Vista en latere versies van Windows) en 512 (Windows Server 2003, Windows XP en Windows 2000). Na het vervangen van tekenreeksen is de maximale lengte, in tekens, van een INF-bestandsreeks 4096, inclusief een afsluit-NULL-teken.
Examples
In het volgende voorbeeld ziet u een fragment van een sectie Tekenreeksen van een door het systeem geleverde landinstelling-specifieke dvd.inf voor installaties in Engelstalige landen/regio's.
[Strings]
Msft="Microsoft"
MfgToshiba="Toshiba"
Tosh404.DeviceDesc="Toshiba DVD decoder card"
; ...
In het volgende voorbeeld ziet u tekenreekssamenvoeging.
[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."