Udostępnij przez


Ogólne reguły składni dla plików INF

Plik INF jest plikiem tekstowym zorganizowanym w nazwane sekcje. Niektóre sekcje mają nazwy zdefiniowane przez system, a niektóre sekcje mają nazwy określone przez autora pliku INF.

Każda sekcja zawiera wpisy specyficzne dla sekcji, które są interpretowane przez składniki instalacji urządzenia. Niektóre wpisy zaczynają się od wstępnie zdefiniowanego słowa kluczowego. Te wpisy są nazywane dyrektywami .

Niektóre wpisy w pliku INF są zasadniczo wskaźnikiem z jednej sekcji do innej w określonym celu. Na przykład dyrektywy INF AddReg identyfikują sekcję zawierającą wpisy, które instruują system Windows, aby zmodyfikował rejestr. Te wpisy czasami zawierają dodatkowe argumenty (wymagane lub opcjonalne) dla systemu Windows do interpretacji podczas instalacji.

Inne wpisy plików INF nie wskazują na inne sekcje, ale podaj informacje używane przez system Windows podczas instalacji, takie jak nazwy plików, wartości rejestru, informacje o konfiguracji sprzętu, flagi itd. Na przykład dyrektywy INF DriverVer dostarcza informacje o wersji sterownika.

Po rozpoczęciu instalacji systemu Windows najpierw wyszukuje sekcję w wersji INF w celu zweryfikowania ważności pliku INF. Następnie rozpoczyna instalację, wyszukując sekcję producenta INF . Ta sekcja zawiera dyrektywy dotyczące INF Models sekcji, które z kolei zawierają dyrektywy prowadzące do różnych INF DDInstall sekcji, na podstawie identyfikatora sprzętu urządzenia, które jest instalowane.

Poniższe reguły składni określają wymaganą i opcjonalną zawartość plików INF, format nazw sekcji przy użyciu tokenów tekstowych oraz format wiersza, jego kontynuację oraz komentarze.

czułość wielkości liter

  • Nazwy sekcji, wpisy i dyrektywy są niewrażliwe na wielkość liter. Na przykład wersja, wersjai wersja są równie prawidłowymi specyfikacjami nazw sekcji w pliku INF.

Wymagana i Opcjonalna Zawartość

  • Zestaw wymaganych i opcjonalnych sekcji, wpisów i dyrektyw w dowolnym konkretnym pliku INF zależy od typu urządzenia/sterownika lub składnika do zainstalowania.

  • Zestaw sekcji, wpisów specyficznych dla sekcji i dyrektyw wymaganych do zainstalowania dowolnego konkretnego urządzenia i jego sterowników również zależy nieco od odpowiedniego instalatora klas, jeśli istnieje. Aby uzyskać więcej informacji na temat sposobu obsługi plików INF specyficznych dla typu urządzenia przez instalatory klas dostarczanych przez system, zobacz dokumentację specyficzną dla typu urządzenia w zestawie WDK.

  • W definicjach składni opcjonalne wpisy są rozdzielane przez bez ograniczeń nawiasów kwadratowych ([,]). Z drugiej strony pogrubione nawiasy ([, ] ]) są wymaganymi elementami wpisu, w którym są zawarte. W poniższym przykładzie nawiasy wokół wersji są wymagane, a nawiasy wokół klasy=nazwy klasy wskazują, że ten wpis jest opcjonalny.

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

nazwy sekcji

  • Sekcje można określić w dowolnej kolejności. Większość plików INF ma sekcje wymienione w określonym porządku, zgodnie z konwencją, ale system Windows znajduje sekcje według nazwy, a nie według ich położenia w pliku INF.

  • Każda sekcja w pliku INF zaczyna się od nazwy sekcji ujętej w nawiasy ([ ]). Nazwa sekcji może być zdefiniowana przez system lub zdefiniowana przez moduł zapisywania INF.

    Na przykład [Manufacturer] określa początek sekcji o nazwie systemowej producent , podczas gdy [Std.Mfg] reprezentuje nazwę sekcji modeli zdefiniowaną przez pisarza INF.

    Nazwa sekcji ma maksymalną długość 255 znaków w systemie Windows 2000 i nowszych wersjach systemu Windows.

    Każda sekcja kończy się na początku nowej [nazwa-sekcji] lub na znaku końca pliku.

  • Jeśli więcej niż jedna sekcja w pliku INF ma taką samą nazwę, system scala swoje wpisy i dyrektywy w jedną sekcję.

  • O ile nie jest ujęta w znaki podwójnego cudzysłowu ("), nazwa sekcji zdefiniowanej przez autorów INF musi być unikalnym dla danego INF, niecytowanym ciągiem widocznych znaków, z wyłączeniem pewnych znaków o znaczeniu specyficznym dla INF. W szczególności niekwestionowana nazwa sekcji, do której odwołuje się wpis lub dyrektywa sekcji, nie może zawierać spacji wiodących lub końcowych, znaku kanału liniowego, znaku powrotnego lub niewidocznego znaku kontrolki i nie powinna zawierać kart. Ponadto nie może zawierać znaków nawiasów kwadratowych ([ ]), znaków procentu (%), średników (;), podwójnych cudzysłowów wewnętrznych (") ani nie może mieć ukośnika wstecznego (\) jako ostatniego znaku.

    Na przykład Std.Mfg i Std_Mfg są unikatowe i prawidłowe nazwy sekcji, gdy odnosi się do nich wpis lub dyrektywa INF, ale Std;Mfg (z wewnętrznym średnikiem) jest nieprawidłowy, chyba że jest ujęty podwójnym cudzysłowem (").

    Określanie nazwy sekcji zdefiniowanej przez moduł zapisywania INF jako "cytowany ciąg" zastępuje większość ograniczeń, które zostały wcześniej opisane na znakach w nazwach sekcji, do których odwołuje się odwołanie. Taka rozdzielana nazwa sekcji może zawierać niemal wszystkie jawnie lub niejawnie widoczne znaki, z wyjątkiem nawiasu zamykającego (]), o ile odpowiednia sekcja w pliku INF pasuje do tego "cytowany ciąg" dokładnie.

    Na przykład, ";; Std Mfg " jest prawidłowym odwołaniem do nazwy sekcji, jeśli odpowiednia deklaracja sekcji w pliku INF dokładnie pasuje do nazwy wewnątrz podwójnych cudzysłowów, pod względem znaków spacji i średnika, jako [;; Std Mfg ].

przy użyciu tokenów ciągu

  • Wiele wartości w pliku INF, w tym nazwy sekcji zdefiniowane przez autora INF, można wyrazić jako tokeny ciągów znaków klucza w formie %strkey%. W sekcji Ciągi INF pliku INF każdy klucz ciągu musi być skojarzony z wartością ciągu składającą się z sekwencji jawnie widocznych znaków. W razie potrzeby kod konfiguracji konwertuje wartość ciągu na Unicode.

    Aby uzyskać więcej informacji na temat definiowania tokenów %strkey% i ich odpowiednich wartości, zobacz opis sekcji ciągów INF.

format linii, kontynuacja i komentarze

  • Każdy wpis i dyrektywa w sekcji kończy się znakiem zwrotnym lub linefeed. W związku z tym edytor tekstów użyty do utworzenia pliku INF nie może wstawić znaków zwracanych ani linefeed po określonej przez edytor dowolnej liczbie znaków.

  • Znak ukośnika odwrotnego (\) może być używany jako jawny kontynuator linii we wpisie lub dyrektywie. Jednak znaki ukośnika odwrotnego są również używane w specyfikacjach ścieżek. Aby upewnić się, że znak ukośnika odwrotnego, który pojawia się w specyfikacji ścieżki, nie jest błędnie interpretowany jako kontynuator linii, należy użyć następującej strategii:

    • W przypadku dyrektywy obejmującej dwa wiersze, z których jeden jest wpisem zawierającym ukośnik odwrotny, użyj cudzysłowów, aby rozdzielić wpis zawierający ukośnik odwrotny.

      CopyFiles = "SomeDirectory\"\
      ,SomeFile
      
    • Unikaj używania znaku ukośnika odwrotnego w sposób przedstawiony w poniższym przykładzie. System Windows ignoruje pierwszy ukośnik odwrotny i interpretuje drugi ukośnik odwrotny jako kontynuator linii.

      CopyFiles = SomeDirectory\\
      ,SomeFile
      
    • Następująca składnia jest prawidłowa i jest równoważna CopyFiles = "SomeDirectory\",SomeFile ; comment.

      CopyFiles = "SomeDirectory\"\ ; comment 
      ,SomeFile
      

      Ponieważ tekst po średniku jest ignorowany, CopyFiles = "SomeDirectory\" ; comment ,SomeFile nie działa.

  • Komentarze rozpoczynają się od znaku średnika (;). Podczas analizowania i interpretowania pliku INF system zakłada, że następujące nie mają znaczenia dla procesu instalacji:

    • Wszelkie znaki następujące po średniku w tym samym wierszu, chyba że średnik pojawia się w "ciąg znaków w cudzysłowie" lub %strkey% token
    • Dowolny pusty wiersz, który nie zawiera niczego poza znakiem przejścia do nowej linii lub znakiem powrotu
  • Przecinki oddzielają wartości podane w pozycjach sekcji i dyrektywach.

    Wpis lub dyrektywa INF może pominąć opcjonalną wartość w środku listy wartości, ale przecinki muszą pozostać. Pliki INF mogą pomijać końcowe przecinki.

    Rozważmy na przykład składnię wpisu sekcji SourceDisksFiles:

    nazwa pliku=diskid[,[podkatalog][,rozmiar]]

    Wpis, który pomija wartość subdir, ale dostarcza wartość rozmiar, musi określić przecinki jako ograniczniki dla obu wartości, jak pokazano w poniższym przykładzie.

    nazwa pliku=diskid,rozmiar

    Wpis w pliku INF, który pomija dwie opcjonalne wartości, może mieć następujący format:

    nazwa pliku=diskid

  • Aby uwzględnić znak procentu (%) w wartościach podanych w wpisach i dyrektywach sekcji, należy poprzedzić znak procentu innym znakiem procentu.

    Rozważmy na przykład tę instrukcję w sekcji [add-registry-section]:

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

    Wartość rejestru zostanie ustawiona z następującą wartością:

    %SystemRoot%\System32\IoLogMsg.dll

  • Aby uwzględnić znak podwójnego cudzysłowu (") w wartościach podanych w wpisach i dyrektywach sekcji, należy użyć kolejnego znaku podwójnego cudzysłowu. Należy pamiętać, że ciąg musi znajdować się w "cytowanym ciągu".

    Rozważmy na przykład tę instrukcję w sekcji [add-registry-section]:

    pl-PL: HKR,,Example,,"Wyświetl ciąg znaków „example”"

    Wartość rejestru zostanie ustawiona z następującą wartością:

    Wyświetlanie ciągu "przykładowego"

limity rozmiaru INF

  • Maksymalna długość pola pliku INF, w znakach, przed podstawieniem ciągu i zawiera końcowy znak NULL, wynosi 4096.

  • Po zastąpieniu ciągu maksymalna długość ciągu w pliku INF w znakach wynosi 4096, wliczając kończący znak NULL.

  • Należy jednak pamiętać, że plug and play (PnP) może nałożyć bardziej restrykcyjny limit dla niektórych pól plików INF rozpoznawanych lub używanych, takich jak opis urządzenia, dostawca sterowników i producent urządzenia.