Aracılığıyla paylaş


INF Dosyaları için Genel Söz Dizimi Kuralları

INF dosyası, adlandırılmış bölümler halinde düzenlenmiş bir metin dosyasıdır. Bazı bölümlerde sistem tanımlı adlar, bazı bölümlerde ise INF dosyasının yazarı tarafından belirlenen adlar bulunur.

Her bölüm, cihaz yükleme bileşenleri tarafından yorumlanan bölüme özgü girdiler içerir. Bazı girişler önceden tanımlanmış bir anahtar sözcükle başlar. Bu girdilere yönerge adı verilir.

Bazı INF dosyası girişleri temelde belirli bir amaç için bir bölümden diğerine işaretçilerdir. Örneğin, INF AddReg yönergesi , Windows'a kayıt defterini değiştirmesini belirten girdiler içeren bir bölüm tanımlar. Windows'un yükleme sırasında yorumlayabilmesi için bu girdiler bazen ek bağımsız değişkenler (gerekli veya isteğe bağlı) içerebilir.

Diğer INF dosyası girdileri diğer bölümleri işaret etmese de, Windows'un yükleme sırasında kullandığı dosya adları, kayıt defteri değerleri, donanım yapılandırma bilgileri, bayraklar vb. bilgileri sağlar. Örneğin, INF DriverVer yönergesi sürücü sürümü bilgilerini sağlar.

Windows bir yüklemeye başladığında, INF dosyasının geçerliliğini doğrulamak için ilk olarak bir INF Sürümü bölümü arar. Ardından bir INF Üreticisi bölümü bularak yüklemeyi başlatır. Bu bölüm INF Modelleri bölümlerine yönelik yönergeler içerir. Bu yönergeler, yüklenen cihazın donanım kimliğine bağlı olarak çeşitli INF DDInstall bölümlerine yol açan yönergeler sağlar.

Aşağıdaki söz dizimi kuralları INF dosyalarının gerekli ve isteğe bağlı içeriğini, dize belirteçlerini kullanarak bölüm adlarının biçimini ve satır biçimini, devamlılığı ve açıklamaları yönetir.

Büyük/Küçük Harf Duyarlılığı

  • Bölüm adları, yönergeler ve girdiler büyük/küçük harfe duyarsızdır. Örneğin, sürüm, SÜRÜM ve Sürüm , inf dosyası içinde eşit olarak geçerli bölüm adı belirtimleridir.

Gerekli ve İsteğe Bağlı İçerikler

  • Belirli bir INF dosyasındaki gerekli ve isteğe bağlı bölümler, girdiler ve yönergeler kümesi, yüklenecek cihaz/sürücü veya bileşenin türüne bağlıdır.

  • Belirli bir cihazı ve sürücülerini yüklemek için gereken bölümler, bölüme özgü girdiler ve yönergeler kümesi, varsa ilgili sınıf yükleyicisine de bağlıdır. Sistem tarafından sağlanan sınıf yükleyicilerinin cihaza özgü INF dosyalarını nasıl işlediği hakkında daha fazla bilgi için WDK'deki cihaz türüne özgü belgelere bakın.

  • Söz dizimi tanımlarında, isteğe bağlı girişler kalın olmayan köşeli parantezlerle ([,]) sınırlandırılır. Öte yandan, kalın köşeli ayraçlar ([, ]) içinde bulundukları girdinin gerekli öğeleridir. Aşağıdaki örnekte, Sürüm çevresindeki köşeli ayraçlar gereklidir, Sınıf=sınıf-adı çevresindeki köşeli ayraçlar ise bu girişin isteğe bağlı olduğunu belirtir.

    [Version]
    
    Signature="signature-name"
    [Class=class-name]
    ...
    

Bölüm Adları

  • Bölümler herhangi bir sırada belirtilebilir. Çoğu INF dosyası bölümleri belirli bir sırada, kurala göre listeler, ancak Windows bölümleri INF dosyasının içindeki konuma göre değil ada göre bulur.

  • BIR INF dosyasındaki her bölüm, bölüm adı köşeli ayraç ([ ]) içine alınmış olarak başlar. Bölüm adı sistem tarafından tanımlanmış veya INF dosyası yazarı tarafından belirlenmiş olabilir.

    Örneğin, [Manufacturer] sistem adlı Manufacturer bölümünün başlangıcını belirtirken [Std.Mfg] belirli bir INF yazıcı tanımlı Modeller bölüm adını temsil eder.

    Bölüm adı, Windows 2000 ve sonraki Windows sürümlerinde en fazla 255 karakter uzunluğundadır.

    Her bölüm yeni bir [bölüm-adı] başında veya dosya sonu işaretinde sona erer.

  • BIR INF dosyasındaki birden fazla bölüm aynı ada sahipse, sistem girdilerini ve yönergelerini tek bir bölümde birleştirir.

  • Çift tırnak işareti karakterleri (") içine alınmadığı sürece, bir INF yazarı tarafından tanımlanan bölüm adı, belirli INF'ye özgü anlamları olan karakterler hariç, açıkça görünen karakterlerden oluşan ve sadece o INF dosyasına özgü, tırnak içine alınmamış bir dize olmalıdır. Özellikle, bölüm girişi veya yönergesi tarafından başvurulan sıralanmamış bölüm adında baştaki veya sondaki boşluklar, satır besleme karakteri, dönüş karakteri veya görünmez bir denetim karakteri olamaz ve sekme içermemelidir. Buna ek olarak, köşeli ayraç ([ ]) karakterlerinden birini, tek bir yüzde (%) karakterini, noktalı virgül (;) veya herhangi bir iç çift tırnak işaretini (") içeremez ve son karakteri olarak ters eğik çizgi (\) içeremez.

    Örneğin, Std.Mfg ve Std_Mfg, bir INF dosya girişi veya yönergesi tarafından başvurulduğunda benzersiz ve geçerli bölüm adlarıdır, ancak Std;Mfg (iç noktalı virgüllenmiş) çift tırnak işareti (") içine alınmadığı sürece geçersizdir.

    INF yazıcı tanımlı bölüm adını "tırnak içine alınmış dize" olarak belirtmek, başvurulan bölüm adlarındaki karakterler üzerinde daha önce açıklanan kısıtlamaların çoğunu geçersiz kılar. Bu tür sınırlandırılmış bölüm adları, INF dosyasındaki ilgili bölüm bu "alıntılanmış dize" ile tam olarak eşleştiği sürece, kapatma köşeli ayracı (]) dışında neredeyse tüm açıkça veya örtük olarak görünür karakterler içerebilir.

    Örneğin, ";; Std Mfg ", INF dosyasındaki karşılık gelen bölüm bildirimi boşluk ve noktalı virgül karakterlerine göre çift tırnak işaretlerinin içindeki adla tam olarak eşleşiyorsa, geçerli bir bölüm adı başvurusudur [;; Std Mfg ].

Dize Belirteçlerini Kullanma

  • INF dosyasındaki INF yazıcı tanımlı bölüm adları da dahil olmak üzere birçok değer, form %strkey'inin% dize anahtarı belirteçleri olarak ifade edilebilir. INF dosyasının INF Dizeleri bölümünde, her dize anahtarının açıkça görünen karakterlerden oluşan bir diziden oluşan bir dize değeriyle ilişkilendirilmesi gerekir. Gerekirse, kurulum kodu dize değerini Unicode'a dönüştürür.

    Strkey% belirteçlerini ve bunların ilgili değerlerini tanımlama % hakkında daha fazla bilgi için INF Dizeleri bölümünün açıklamasına bakın.

Satır Biçimi, Devamlılık ve Açıklamalar

  • Bir bölümdeki her giriş ve yönerge bir dönüş veya satır besleme karakteriyle biter. Bu nedenle, INF dosyası oluşturmak için kullanılan metin düzenleyicisi rastgele, düzenleyici tarafından belirlenen karakter sayısından sonra dönüş veya satır besleme karakterleri eklememelidir.

  • Ters eğik çizgi karakteri (\), bir giriş veya yönergede açık bir satır devamı işareti olarak kullanılabilir. Ancak, yol belirtimlerinde ters eğik çizgi karakterleri de kullanılır. Yol belirtiminde görünen bir ters eğik çizgi sembolünün satır devamı sembolü olarak yanlış yorumlanmadığından emin olmak için aşağıdaki stratejiyi kullanın:

    • Biri ters eğik çizgi içeren bir girdi olan iki satıra yayılan bir yönerge için, ters eğik çizgiyi içeren girişi sınırlandırmak için tırnak işaretlerini kullanın.

      CopyFiles = "SomeDirectory\"\
      ,SomeFile
      
    • Ters eğik çizgi karakterini aşağıdaki örnekte gösterilen şekilde kullanmaktan kaçının. Windows ilk ters eğik çizgiyi görmezden gelir ve ikinci ters eğik çizgiyi satır devamı olarak yorumlar.

      CopyFiles = SomeDirectory\\
      ,SomeFile
      
    • Aşağıdaki söz dizimi geçerlidir ve ile CopyFiles = "SomeDirectory\",SomeFile ; commenteşdeğerdir.

      CopyFiles = "SomeDirectory\"\ ; comment 
      ,SomeFile
      

      Noktalı virgülden sonraki metin yoksayıldığından, CopyFiles = "SomeDirectory\" ; comment ,SomeFile çalışmaz.

  • Açıklamalar noktalı virgül (;) karakteriyle başlar. Sistem, bir INF dosyasını ayrıştırırken ve yorumlarken aşağıdakilerin yükleme işlemiyle ilgisi olmadığını varsayar:

    • Noktalı virgül bir "tırnak işareti ile" kuşatılmış dize veya %strkey% belirteci içinde görünmedikçe, aynı satırda noktalı virgülden sonra gelen karakterler.
    • Satır besleme veya dönüş karakteri dışında hiçbir şey içermeyen boş satırlar
  • Virgüller, bölüm girdilerinde ve yönergelerinde sağlanan değerleri birbirinden ayırır.

    BIR INF dosya girişi veya yönergesi, bir değer listesinin ortasındaki isteğe bağlı bir değeri atlayabilir, ancak virgüllerin kalması gerekir. INF dosyaları sondaki virgülleri atlayabilir.

    Örneğin, SourceDisksFiles bölüm girişinin söz dizimini göz önünde bulundurun:

    Dosyaadı=diskid[,[subdir][,size]]

    Aşağıdaki örnekte gösterildiği gibi , alt dizin değerini atlayan ancak boyut değerini sağlayan bir girdinin her iki değer için de virgül sınırlayıcılarını belirtmesi gerekir:

    Dosyaadı=diskid,,boyut

    bir INF dosyasındaki isteğe bağlı iki değeri atlayan bir girdi şu biçime sahip olabilir:

    Dosyaadı=diskid

  • Bölüm girdilerinde ve yönergelerinde sağlanan değerlere bir yüzde (%%) karakteri eklemek için, yüzde karakterini başka bir yüzde karakteriyle kaçış yapın.

    Örneğin, şu deyimi [add-registry-section] bölümünde ele alalım :

    HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll"

    Kayıt defteri değeri aşağıdaki değerle ayarlanır:

    %SystemRoot%\System32\IoLogMsg.dll

  • Bölüm girişlerinde ve yönergelerde sağlanan değerlere çift tırnak (") karakteri eklemek için, çift tırnak karakterini başka bir çift tırnak karakteriyle kaçış karakteri olarak kullanın. Dizenin "tırnak işareti içinde" olması gerektiğini unutmayın.

    Örneğin, şu deyimi [add-registry-section] bölümünde ele alalım :

    HKR,,Örnek,,"""örnek"" dizesini görüntüleme"

    Kayıt defteri değeri aşağıdaki değerle ayarlanır:

    "Örnek" dizesini görüntüleme

INF Boyut Sınırları

  • Bir INF dosya alanındaki karakter uzunluğunun üst sınırı, dize değişikliği yapılmadan önce ve sonlandırıcı NULL karakter de dahil olmak üzere, 4096'dır.

  • Dize değiştirmeden sonra, maksimum uzunluğu 4096 karakter olan bir INF dosya dizesi sonlandırıcı NULL karakteri de içerir.

  • Ancak Tak Çalıştır'ın (PnP) cihaz açıklaması, sürücü sağlayıcısı ve cihaz üreticisi gibi tanıdığı veya kullandığı belirli INF dosyası alanları için daha kısıtlayıcı bir sınır getirebileceğini unutmayın.