Dirids 사용
INF 파일에 표시되는 대부분의 디렉터리는 특정 디렉터리를 식별하는 숫자인 디렉터리 식별자(dirids)를 사용하여 표현할 수 있습니다. 애플리케이션은 사용할 수 있지만 값이 -1에서 32767까지인 dirid와 연결된 시스템 정의 디렉터리를 다시 할당할 수는 없습니다.
사용자 정의 값이 32768에서 65534 또는 65536 이상인 dirid를 만들려면 SetupSetDirectoryId 함수(Microsoft Windows SDK 설명서에 설명됨)를 사용합니다.
값이 65535인 dirid는 값이 -1인 dirid와 동의어로 간주되지만 후자(dirid -1)가 선호됩니다.
INF 파일에서 dirids를 사용하려는 경우 다음 두 가지 지침을 고려합니다.
INF 파일 항목의 구문이 dirid 값(예: INF DestinationDirs 섹션)을 명시적으로 지정하는 경우 해당 값을 숫자로 표현합니다.
다음 예제에서는 이 구문을 보여 줍니다.
[DestinationDirs] DefaultDestDir = 11 ; \system32 directory on Windows 2000 and later versions
INF 파일 항목의 구문에서 파일 경로를 지정하는 경우 시스템에서 제공하는 문자열 대체를 사용하여 이 경로의 일부 또는 전체를 나타낼 수 있습니다. 이 대체 형식은 다음과 같습니다.
%dirid%
이 양식은 백분율(%) 문자 와 지정하려는 디렉터리의 dirid , 그 뒤에 다른 백분율(%) 문자로 구성됩니다. 종료 백슬래시() 문자는 이 식을 다음 파일 이름 또는 경로의 추가 디렉터리에서 구분합니다.
다음 예제에서는 이 구문을 보여 줍니다.
[aic78xx_Service_Inst] ServiceBinary = %12%\aic78xx.sys
완전히 확장되면 이전 예제에 표시된 경로는 c:\windows\system32\드라이버\aic78xx.sys 됩니다(Windows가 c:\windows 디렉터리에 설치되었다고 가정). 문자열 대체 또는 %dirid% 양식은 INF 파일의 INF 문자열 섹션을 제외하고 문자열이 필요한 모든 곳에서 사용할 수 있습니다.
다음 두 예제에서는 문자열 대체를 사용하지 않아야 하는 방법을 보여 줍니다.
[DestinationDirs] DefaultDestDir = %11% ; Error! - number expected [aic78xx_Service_Inst] ServiceBinary = 12\aic78xx.sys ; Error! - unknown directory name
첫 번째 예제에서 DefaultDestDir 항목의 구문에는 해당 값이 숫자여야 합니다. 그러나 %11% 식은 문자열로 확장됩니다. 두 번째 예제에서 INF 작성기는 ServiceBinary 항목의 값을 드라이버가 포함된 디렉터리의 파일로 설정하려는 것으로 보입니다(자세한 내용은 다음 표 참조). 이 오류는 Windows가 컴퓨터에 존재하지 않는 "12"라는 디렉터리에서 지정된 파일을 찾기 때문에 발생합니다.
다음 표에서는 일반적으로 사용되는 몇 가지 dirid 및 해당 디라이드가 나타내는 디렉터리를 보여 줍니다. 디바이스 INF 파일 및 드라이버 INF 파일에서 가장 일반적으로 지정하는 값이 테이블 맨 위에 나열됩니다.
드라이버 패키지 격리 요구 사항의 일부로 드라이버 저장소에서 드라이버를 실행하고 DIRID 13을 사용하여 설치할 드라이버 패키지 파일의 위치를 지정해야 합니다. Windows 11부터 WHQL 서명을 위해 INF를 제출할 때 일반적으로 사용되는 일부 dirids 버전 24H2는 더 이상 사용되지 않습니다. 자세한 내용은 InfVerif /h를 참조 하세요.
값 | Destination Directory | 사용되지 않는 릴리스 |
---|---|---|
01 |
SourceDrive:\pathname (INF 파일이 설치된 디렉터리) |
Windows 11 24H2 |
10 |
Windows 디렉터리. %SystemRoot%에 해당합니다. |
|
11 |
시스템 디렉터리입니다. 이는 Windows 2000 이상 버전의 Windows용 %SystemRoot%\system32와 동일합니다. |
|
12 |
드라이버 디렉터리입니다. 이는 Windows 2000 이상 버전의 Windows용 %SystemRoot%\system32\드라이버와 동일합니다. |
|
13 |
드라이버 패키지의 드라이버 저장소 디렉터리입니다. Windows 8.1 이상 버전의 경우 드라이버 패키지를 가져온 드라이버 저장소 디렉터리의 경로를 지정합니다. DestinationDirs에 dirid 13이 포함된 파일에서는 DelFiles를 사용하지 마세요. 파일에 대한 SourceDiskFiles 섹션의 선택적 하위 디렉터리가 이 파일에 적용되는 항목의 DestinationDirs 섹션에 있는 하위 디렉터리와 일치해야 합니다. CopyFiles를 사용하여 DestinationDirs에 dirid 13이 포함된 파일의 이름을 바꾸지 마세요. dirid 13 사용에 대한 자세한 내용은 드라이버 스토어에서 실행을 참조하세요. |
|
17 |
INF 파일 디렉터리 |
Windows 11 24H2 |
18 |
도움말 디렉터리 |
Windows 11 24H2 |
20 |
글꼴 디렉터리 |
Windows 11 24H2 |
21 |
뷰어 디렉터리 |
Windows 11 24H2 |
23 |
ICM(색 디렉터리)(프린터 드라이버 설치에 사용되지 않음 ) |
|
24 |
시스템 디스크의 루트 디렉터리입니다. Windows 파일이 설치된 디스크의 루트 디렉터리입니다. 예를 들어 dirid 10이 "C:\winnt"이면 dirid 24는 "C:\"입니다. |
Windows 11 24H2 |
25 |
공유 디렉터리 |
Windows 11 24H2 |
30 |
부팅 디스크의 루트 디렉터리("ARC 시스템 파티션"라고도 함). (dirid 24가 나타내는 디렉터리와 같은 디렉터리일 수도 있고 아닐 수도 있습니다.) |
Windows 11 24H2 |
50 |
시스템 디렉터리 이는 %SystemRoot%\system과 동일합니다. |
Windows 11 24H2 |
51 |
스풀 디렉터리(프린터 드라이버 설치에 사용되지 않음 - 프린터 Dirids 참조) |
|
52 |
스풀 드라이버 디렉터리(프린터 드라이버 설치에 사용되지 않음 ) |
|
53 |
사용자 프로필 디렉터리 |
Windows 11 24H2 |
54 |
Ntldr.exe 및 Osloader.exe 있는 디렉터리 |
Windows 11 24H2 |
55 |
인쇄 프로세서 디렉터리(프린터 드라이버 설치에 사용되지 않음 ) |
|
-1 |
절대 경로 |
Windows 11 24H2 |
16384에서 32767까지의 Dirid 값은 특수 셸 폴더용으로 예약됩니다. 다음 표에서는 이러한 폴더에 대한 dirid 값을 보여 줍니다.
값 | Shell 특수 폴더 | 사용되지 않는 릴리스 |
---|---|---|
16406 |
모든 사용자\시작 메뉴 |
Windows 11 24H2 |
16407 |
모든 사용자\시작 메뉴\프로그램 |
Windows 11 24H2 |
16408 |
모든 사용자\시작 메뉴\프로그램\시작 |
Windows 11 24H2 |
16409 |
모든 사용자\데스크톱 |
Windows 11 24H2 |
16415 |
모든 사용자\즐겨찾기 |
Windows 11 24H2 |
16419 |
모든 사용자\애플리케이션 데이터 |
Windows 11 24H2 |
16422 |
프로그램 파일 |
|
16425 |
%SystemRoot%\SysWOW64 |
|
16426 |
%ProgramFiles(x86)% |
|
16427 |
Program Files\Common |
|
16428 |
%ProgramFiles(x86)%\Common |
|
16429 |
모든 사용자\템플릿 |
Windows 11 24H2 |
16430 |
모든 사용자\문서 |
Windows 11 24H2 |
Setupapi.h에 정의된 이 테이블의 값 외에도 Shlobj.h에 정의된 CSIDL_Xxx 값을 사용할 수 있습니다. 이 테이블에 나열되지 않은 폴더의 dirid 값을 정의하려면 CSIDL_Xxx 값에 16384(0x4000)를 추가합니다. CSIDL_Xxx 값에 대한 자세한 내용은 Windows SDK 설명서를 참조하세요.