Bagian String INF
File INF harus memiliki setidaknya satu bagian String untuk menentukan setiap token %strkey% yang ditentukan di tempat lain dalam INF tersebut.
[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""
...
Entri
strkey1, strkey2, ...
Setiap kunci string dalam file INF harus menentukan nama unik yang terdiri dari huruf, digit, dan/atau karakter lain yang terlihat secara eksplisit. Karakter % dalam token strkey seperti itu harus dinyatakan sebagai %%.
beberapa string | "beberapa string"
Menentukan string, secara opsional dibatasi dengan menggunakan karakter tanda kutip ganda ("), yang berisi huruf, digit, tanda baca, dan bahkan mungkin karakter tertentu yang terlihat secara implisit, khususnya, spasi internal dan/atau karakter tab. Namun, string yang tidak dikutip tidak boleh berisi tanda kutip ganda internal ("), titik koma (;), linefeed, return, atau karakter kontrol yang tidak terlihat, dan tidak dapat memiliki garis miring terbalik () sebagai karakter akhirnya.
"* string-with-leading-or-trailing-whitespace* " |
"string multibaris sangat panjang" |
"string-ending-in-backslash" |
""double-quoted-string-value""
Nilai yang ditentukan untuk token %strkey% harus diapit tanda kutip ganda (") jika memenuhi salah satu kriteria berikut:
Jika string yang ditentukan memiliki spasi putih di depan atau di belakang yang harus dipertahankan sebagai bagian dari nilainya, string tersebut harus diapit dalam tanda kutip ganda karakter untuk mencegah spasi putih di depan dan/atau di belakangnya dibuang oleh pengurai INF.
Jika string panjang mungkin berisi karakter linefeed internal atau pengembalian karena pembungkusan baris di editor teks, string tersebut juga harus diapit dalam tanda kutip ganda untuk mencegah pemotongan string pada linefeed internal awal atau karakter kembali.
Jika string tersebut berisi titik koma, string harus diapit dalam tanda kutip ganda untuk mencegah string terpotong pada titik koma. (Seperti yang sudah disebutkan dalam Aturan Sintaks Umum untuk File INF, karakter titik koma memulai setiap komentar dalam file INF.)
Jika string seperti itu berakhir dengan garis miring terbalik, string harus diapit dalam tanda kutip ganda untuk mencegah string digabungkan dengan entri berikutnya. (Seperti yang telah disebutkan dalam Aturan Sintaks Umum untuk File INF, karakter garis miring terbalik () digunakan sebagai kontinuator baris dalam file INF.)
Seperti spesifikasi string yang tidak dikutip, "string yang dikutip" seperti itu tidak boleh berisi karakter tanda kutip ganda internal. Namun, ini dapat ditentukan sebagai nilai string yang dikutip dua kali secara eksplisit dengan menggunakan satu atau beberapa pasangan tambahan dari karakter tanda kutip ganda (misalnya, ""beberapa string"").
Pengurai INF tidak hanya membuang sepasang tanda kutip ganda terluar untuk setiap "string yang dikutip" di bagian ini, tetapi juga mengembun setiap pasangan tanda kutip ganda berikutnya ke dalam satu karakter tanda kutip ganda.
Misalnya, """beberapa string""" juga menjadi "beberapa string" ketika diurai.
Untuk meringkas, string apa pun harus diapit dalam sepasang karakter tanda kutip ganda (") jika salah satu dari berikut ini benar:
- String berisi spasi putih di depan atau di belakang.
- String sangat panjang sehingga garis dibungkus.
- String berisi titik koma atau karakter garis miring terbelakang akhir.
- String itu sendiri adalah string yang dikutip.
Pengurai INF sistem membuang sepasang tanda kutip ganda terluar yang menutupi karakter yang memisahkan string tersebut, bersama dengan karakter spasi putih di depan atau di belakang di luar pemisah string tanda kutip ganda.
Keterangan
Karena pengurai INF sistem menghapus pasangan terluar dari tanda kutip ganda dari "string yang dikutip" yang mendefinisikan token %strkey%, banyak file INF sistem mendefinisikan semua token %strkey% sebagai "string yang dikutip"s untuk menghindari hilangnya spasi kosong di depan dan di belakang selama penguraian INF. Penggunaan "string yang dikutip"s juga memastikan bahwa nilai string yang sangat panjang yang membungkus di seluruh baris tidak dapat dipotong, dan bahwa string dengan garis miring terbalik akhir tidak dapat digabungkan ke baris berikutnya dalam file INF.
Untuk membuat satu file INF internasional, INF dapat memiliki sekumpulan String khusus lokal.Bagian LanguageID, seperti yang ditunjukkan dalam pernyataan sintaks formal. Ekstensi LanguageID adalah nilai heksadesimal 4 digit (tanpa "0x") terkemuka yang didefinisikan sebagai berikut:
- 10 bit yang lebih rendah berisi ID bahasa utama dan 6 bit berikutnya berisi ID sublanguage, seperti yang ditentukan oleh makro MAKELANGID yang ditentukan dalam Winnt.h.
- ID bahasa dan subbahasa harus cocok dengan nilai yang ditentukan sistem dari konstanta Win32 LANG_XXXX dan SUBLANG_XXXX yang ditentukan dalam Winnt.h.
Misalnya, nilai LanguageID 0407 mewakili ID bahasa utama LANG_GERMAN (07) dengan ID sublanguage SUBLANG_GERMAN (01) seperti dalam contoh berikut:
[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"
File INF hanya dapat berisi satu bagian String, bersama dengan satu String.Bagian LANGUAGEID untuk setiap nilai LanguageID.
Windows memilih satu bagian String yang digunakan untuk menerjemahkan semua token %strkey% untuk penginstalan. Bergantung pada lokal komputer tertentu saat ini, Windows memilih bagian String dengan cara berikut:
Windows pertama-tama mencari . Nilai LANGUAGEID dalam INF yang cocok dengan lokal saat ini yang ditetapkan ke komputer. Jika kecocokan yang tepat ditemukan, Windows menggunakan String tersebut.LANGUAGEID Bagian INF untuk menerjemahkan semua token %strkey% yang ditentukan dalam INF.
Anda perlu menduplikasi semua token string di semua String.* bagian, bahkan konstanta numerik/tetap yang tidak perlu dilokalkan.
Jika tidak, Windows mencari kecocokan berikutnya dengan nilai LANG_XXX dengan nilai SUBLANG_NEUTRAL sebagai SUBLANG_XXX. Jika kecocokan tersebut ditemukan, Windows menggunakan bagian INF tersebut untuk menerjemahkan semua token %strkey% yang ditentukan dalam INF.
Jika tidak, Windows mencari kecocokan berikutnya dengan nilai LANG_XXX dan SUBLANG_XXXX yang valid untuk keluarga LANG_XXX yang sama. Jika kecocokan parsial seperti itu ditemukan, gunakan String tersebut.LANGUAGEID Bagian INF untuk menerjemahkan semua token %strkey% yang ditentukan dalam INF.
Jika tidak, Windows menggunakan bagian String yang tidak terdekorasi untuk semua menerjemahkan token %strkey% yang ditentukan dalam INF.
Berdasarkan konvensi, dan untuk kenyamanan dalam membuat satu set file INF untuk pasar internasional, bagian String adalah yang terakhir dalam semua file INF sistem. Menggunakan token %strkey% untuk semua nilai string yang terlihat pengguna dalam INF, dan menempatkannya di bagian String per lokal, menyederhanakan terjemahan string tersebut. Untuk informasi selengkapnya tentang file INF khusus lokal, lihat Membuat File INF Internasional.
Meskipun bagian String adalah bagian terakhir dalam setiap file INF, token %strkey% yang ditentukan yang ditentukan dalam bagian String dapat digunakan berulang kali di tempat lain di INF, khususnya, di mana pun nilai yang diterjemahkan dari token tersebut diperlukan. Fungsi SetupAPI memperluas setiap token %strkey% ke string yang ditentukan lalu menggunakan nilai yang diperluas untuk pemrosesan INF lebih lanjut.
Penggunaan token %strkey% dalam file INF tidak dibatasi untuk nilai string yang terlihat pengguna. Token ini dapat digunakan dengan cara apa pun yang nyaman bagi penulis INF, selama setiap token didefinisikan dalam bagian String . Misalnya, ketika Anda menulis file INF yang memerlukan spesifikasi beberapa GUID, mungkin lebih mudah untuk membuat token %strkey% untuk setiap GUID, dengan menggunakan nama yang bermakna sebagai pengganti untuk setiap nilai GUID tersebut.
Menentukan sekumpulan %nilai strkey% = "{GUID}" di bagian String file INF mengharuskan Anda mengetik setiap nilai GUID eksplisit hanya sekali. Ini dapat membantu menyediakan dokumentasi INF internal yang lebih mudah dibaca daripada dengan menggunakan nilai GUID eksplisit di seluruh file INF.
Semua token %strkey% harus didefinisikan dalam file INF tempat token tersebut dirujuk. Oleh karena itu, untuk setiap file INF yang memiliki entri Sertakan dan Kebutuhan , INF yang disertakan harus memiliki bagian String sendiri untuk menentukan semua token %strkey% yang dirujuk dalam INF tersebut.
Di bagian String INF, panjang maksimum, dalam karakter, string pengganti, termasuk karakter NULL yang mengakhiri, adalah 4096 (Windows Vista dan versi Windows yang lebih baru) dan 512 (Windows Server 2003, Windows XP, dan Windows 2000). Setelah penggantian string, panjang maksimum, dalam karakter, dari string file INF adalah 4096, termasuk karakter NULL yang mengakhiri.
Contoh
Contoh berikut menunjukkan fragmen bagian String dari dvd.inf khusus lokal yang disediakan sistem untuk penginstalan di negara/wilayah berbahasa Inggris.
[Strings]
Msft="Microsoft"
MfgToshiba="Toshiba"
Tosh404.DeviceDesc="Toshiba DVD decoder card"
; ...
Contoh berikut menunjukkan perangkaian string.
[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."