다음을 통해 공유


INF 파일에 대한 일반 구문 규칙

INF 파일은 명명된 섹션으로 구성된 텍스트 파일입니다. 일부 섹션에는 시스템 정의 이름이 있고 일부 섹션에는 INF 파일의 작성기에 의해 결정된 이름이 있습니다.

각 섹션에는 디바이스 설치 구성 요소로 해석되는 섹션별 항목이 포함되어 있습니다. 일부 항목은 미리 정의된 키워드(keyword) 시작합니다. 이러한 항목을 지시문이라고 합니다.

일부 INF 파일 항목은 기본적으로 특정 목적을 위해 한 섹션에서 다른 섹션으로 포인터입니다. 예를 들어 INF AddReg 지시문 은 Windows에 레지스트리를 수정하도록 지시하는 항목이 포함된 섹션을 식별합니다. 이러한 항목에는 설치 중에 Windows에서 해석할 추가 인수(필수 또는 선택 사항)가 포함되어 있는 경우가 있습니다.

다른 INF 파일 항목은 다른 섹션을 가리키지 않지만 설치 중에 Windows에서 사용하는 정보(예: 파일 이름, 레지스트리 값, 하드웨어 구성 정보, 플래그 등)를 제공합니다. 예를 들어 INF DriverVer 지시문 은 드라이버 버전 정보를 제공합니다.

Windows에서 설치를 시작하면 먼저 INF 버전 섹션 을 검색하여 INF 파일의 유효성을 확인합니다. 그런 다음 INF Manufacturer 섹션을 찾아 설치를 시작합니다. 이 섹션에는 설치 중인 디바이스의 하드웨어 ID에 따라 다양한 INF DDInstall 섹션으로 이어지는 지시문을 제공하는 INF 모델 섹션에 대한 지시문이 포함되어 있습니다.

다음 구문 규칙은 INF 파일의 필수 및 선택적 콘텐츠, 문자열 토큰을 사용하여 섹션 이름의 형식, 줄 형식, 연속 및 주석을 제어합니다.

대 / 소문자 구분

  • 섹션 이름, 항목 및 지시문은 대/소문자를 구분하지 않습니다. 예를 들어 버전, VERSIONVersion 은 INF 파일 내에서 동일하게 유효한 섹션 이름 사양입니다.

필수 및 선택적 콘텐츠

  • 특정 INF 파일의 필수 및 선택적 섹션, 항목 및 지시문 집합은 설치할 디바이스/드라이버 또는 구성 요소의 유형에 따라 달라집니다.

  • 특정 디바이스 및 해당 드라이버를 설치하는 데 필요한 섹션, 섹션별 항목 및 지시문 집합도 해당 클래스 설치 관리자(있는 경우)에 따라 달라집니다. 시스템 제공 클래스 설치 관리자가 디바이스 유형별 INF 파일을 처리하는 방법에 대한 자세한 내용은 WDK의 디바이스 유형별 설명서를 참조하세요.

  • 구문 정의 내에서 선택적 항목은 볼록하지 않은 대괄호([,])로 구분됩니다. 반면에 은 대괄호([, ])는 포함된 항목의 필수 요소입니다. 다음 예제에서는 버전 주위의 대괄호가 필요하지만 클래스=클래스 이름 주위의 대괄호는 이 항목이 선택 사항임을 나타냅니다.

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

섹션 이름

  • 섹션은 순서대로 지정할 수 있습니다. 대부분의 INF 파일은 특정 순서로 섹션을 규칙에 따라 나열하지만 Windows는 INF 파일 내의 위치가 아닌 이름으로 섹션을 찾습니다.

  • INF 파일의 각 섹션은 대괄호([ ])로 묶인 섹션 이름으로 시작합니다. 섹션 이름은 시스템 정의 또는 INF-writer-defined일 수 있습니다.

    예를 들어 [Manufacturer] 는 시스템 이름이 인 Manufacturer 섹션의 시작을 지정하고 [Std.Mfg] 는 특정 INF 작성기 정의 모델 섹션 이름을 나타냅니다.

    섹션 이름은 Windows 2000 이상 버전의 Windows에서 최대 길이가 255자입니다.

    각 섹션은 새 [section-name] 의 시작 부분 또는 파일 끝 표시에서 끝납니다.

  • INF 파일에서 둘 이상의 섹션 이름이 같은 경우 시스템은 해당 항목과 지시문을 단일 섹션에 병합합니다.

  • 큰따옴표 문자(")로 묶지 않는 한 INF 작성기 정의 섹션 이름은 INF 관련 의미가 있는 특정 문자를 제외하고 명시적으로 표시되는 문자의 고유-따옴표 없는 문자열이어야 합니다. 특히 섹션 항목 또는 지시문에서 참조하는 따옴표가 지정되지 않은 섹션 이름은 선행 또는 후행 공백, 줄 바꿈 문자, 반환 문자 또는 보이지 않는 컨트롤 문자를 포함할 수 없으며 탭을 포함해서는 안 됩니다. 또한 대괄호([ ]) 문자, 단일 백분율() 문자, 세미콜론(%;) 또는 내부 큰따옴표(") 문자를 포함할 수 없으며 백슬래시(\)를 마지막 문자로 사용할 수 없습니다.

    예를 들어 Std.Mfg 및 Std_Mfg INF 파일 항목 또는 지시문에서 참조할 때 고유하고 유효한 섹션 이름이지만 Std; Mfg(내부 세미콜론 포함)는 큰따옴표(")로 묶이지 않는 한 유효하지 않습니다.

    INF-writer 정의 섹션 이름을 "따옴표 붙은 문자열" 로 지정하면 참조된 섹션 이름의 문자에 대해 이전에 설명한 대부분의 제한 사항이 재정의됩니다. 이러한 구분된 섹션 이름은 INF 파일의 해당 섹션이 이 "따옴표 붙은 문자열"과 정확히 일치하는 한 닫는 대괄호(])를 제외한 거의 모든 명시적으로 또는 암시적으로 표시되는 문자를 포함할 수 있습니다.

    예: ";; Std Mfg " 는 INF 파일의 해당 섹션 선언이 공백 및 세미콜론 문자와 관련하여 큰따옴표 안의 이름과 정확히 일치하는 경우 유효한 section-name 참조입니다 .;; Std Mfg ].

문자열 토큰 사용

  • INF-writer 정의 섹션 이름을 포함하여 INF 파일의 많은 값을 양식 %strkey%의 문자열 키 토큰으로 표현할 수 있습니다. INF 파일의 INF 문자열 섹션에서 각 문자열 키는 명시적으로 표시되는 문자 시퀀스로 구성된 문자열 값과 연결되어야 합니다. 필요한 경우 설정 코드는 문자열 값을 유니코드로 변환합니다.

    strkey% 토큰 및 해당 값을 정의하는 % 방법에 대한 자세한 내용은 INF 문자열 섹션의 설명을 참조하세요.

줄 서식, 연속 및 메모

  • 섹션의 각 항목 및 지시문은 반환 또는 줄 바꿈 문자로 끝납니다. 따라서 INF 파일을 만드는 데 사용되는 텍스트 편집기는 임의의 편집기 결정 문자 수 뒤에 반환 문자 또는 줄 바꿈 문자를 삽입해서는 안됩니다.

  • 백슬래시 문자(\)는 항목 또는 지시문에서 명시적 줄 연속자로 사용할 수 있습니다. 그러나 백슬래시 문자는 경로 사양에도 사용됩니다. 경로 사양에 나타나는 백슬래시 문자가 줄 연속자로 잘못 해석되지 않도록 하려면 다음 전략을 사용합니다.

    • 백슬래시를 포함하는 항목 중 하나인 두 줄에 걸쳐 있는 지시문의 경우 따옴표를 사용하여 백슬래시가 포함된 항목을 구분합니다.

      CopyFiles = "SomeDirectory\"\
      ,SomeFile
      
    • 다음 예제와 같이 백슬래시 문자를 사용하지 않습니다. Windows는 첫 번째 백슬래시를 무시하고 두 번째 백슬래시를 줄 연속자로 해석합니다.

      CopyFiles = SomeDirectory\\
      ,SomeFile
      
    • 다음 구문은 유효하며 와 동일합니다 CopyFiles = "SomeDirectory\",SomeFile ; comment.

      CopyFiles = "SomeDirectory\"\ ; comment 
      ,SomeFile
      

      세미콜론 뒤의 텍스트는 무시되므로 가 CopyFiles = "SomeDirectory\" ; comment ,SomeFile 작동하지 않습니다.

  • 주석은 세미콜론(;) 문자로 시작합니다. INF 파일을 구문 분석하고 해석할 때 시스템은 다음이 설치 프로세스와 관련이 없다고 가정합니다.

    • 세미콜론이 "따옴표 붙은 문자열" 또는 %strkey% 토큰 내에 나타나지 않는 한 동일한 줄에서 세미콜론을 따르는 모든 문자
    • 줄 바꿈 또는 반환 문자를 제외한 아무것도 포함되지 않은 빈 줄
  • 쉼표는 섹션 항목 및 지시문에 제공된 값을 구분합니다.

    INF 파일 항목 또는 지시문은 값 목록의 중간에 선택적 값을 생략할 수 있지만 쉼표는 남아 있어야 합니다. INF 파일은 후행 쉼표는 생략할 수 있습니다.

    예를 들어 SourceDisksFiles 섹션 항목에 대한 구문을 고려합니다.

    파일=diskid[,[subdir][,size]]

    하위 값을 생략하지만 크기 값을 제공하는 항목은 다음 예제와 같이 두 값 모두에 대한 쉼표 구분 기호를 지정해야 합니다.

    파일=diskid,,size

    두 선택적 값을 생략하는 INF 파일의 항목은 다음 형식을 가질 수 있습니다.

    파일=diskid

  • 섹션 항목 및 지시문에 제공된 값에 백분율(%) 문자를 포함하려면 백분율 문자를 다른 백분율 문자로 이스케이프합니다.

    예를 들어 [add-registry-section] 섹션에서 이 문을 고려합니다.

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

    레지스트리 값은 다음 값으로 설정됩니다.

    %SystemRoot%\System32\IoLogMsg.dll

  • 섹션 항목 및 지시문에 제공된 값에 큰따옴표(") 문자를 포함하려면 큰따옴표 문자를 다른 큰따옴표 문자로 이스케이프합니다. 문자열은 "따옴표 붙은 문자열" 내에 있어야 합니다.

    예를 들어 [add-registry-section] 섹션에서 이 문을 고려합니다.

    HKR,,Example,,""example"" 문자열 표시

    레지스트리 값은 다음 값으로 설정됩니다.

    "예제" 문자열 표시

INF 크기 제한

  • 문자열 대체 전과 종결 NULL 문자를 포함하는 INF 파일 필드의 최대 길이(문자)는 4096입니다.

  • 문자열 대체 후 INF 파일 문자열의 최대 길이(문자)는 4096이며, 여기에는 종결 NULL 문자가 포함됩니다.

  • 그러나 PnP(플러그 앤 플레이)는 디바이스 설명, 드라이버 공급자 및 디바이스 제조업체와 같이 인식하거나 사용하는 특정 INF 파일 필드에 대해 더 제한적인 제한을 적용할 수 있습니다.