INF AddInterface 지시문

INF DDInstall.Interfaces 섹션 내에서 하나 이상의 AddInterface 지시문을 지정할 수 있습니다. 이 지시문은 다른 드라이버 또는 애플리케이션과 같은 상위 수준 구성 요소로 내보낸 디바이스 인터페이스 클래스 에 대한 디바이스별 지원을 설치합니다. 지시문은 일반적으로 디바이스 인터페이스 클래스의 디바이스별 instance 대한 레지스트리 정보를 설정하는 추가 인터페이스 섹션 을 참조합니다.

[DDInstall.Interfaces]
  
AddInterface={InterfaceClassGUID} [,[reference-string] [,[add-interface-section][,flags]]] 

내보낸 디바이스 인터페이스 클래스는 커널 스트리밍으로 정의된 클래스와 같은 시스템 정의 디바이스 인터페이스 클래스 또는 INF InterfaceInstall32 섹션으로 지정된 새 디바이스 인터페이스 클래스 중 하나일 수 있습니다.

항목

InterfaceClassGUID
디바이스 인터페이스 클래스를 식별하는 GUID 값을 지정합니다. 이 값은양식 {nnnnnnn-nn-n-n-}의 명시적 GUID 값 또는 INF 파일의 Strings 섹션에서 "{nnnn----}"에 정의된 %strkey% 토큰으로 표현할 수 있습니다.

GUID를 만드는 방법에 대한 자세한 내용은 드라이버에서 GUID 사용을 참조하세요. 시스템 정의 인터페이스 클래스 GUIDS의 경우 커널 스트리밍 인터페이스 GUID에 대한 Ks.h 와 같은 적절한 헤더를 참조하세요.

reference-string
지정된 인터페이스 클래스의 디바이스별 instance 연결된 이 선택적 값은 "따옴표 붙은 문자열" 또는 INF 문자열 섹션에 정의된 %strkey% 토큰으로 표현할 수 있습니다.

PnP 함수 및 필터 드라이버는 일반적으로 INF 파일의 AddInterface= 항목에서 이 값을 생략합니다. 참조 문자열은 단일 인터페이스 클래스의 여러 인스턴스를 사용하여 요청 시 만들어지는 소프트웨어 디바이스의 자리 표시자로 swenum 드라이버에서 사용됩니다. 동일한 InterfaceClassGUID 값을 두 개 이상의 고유한 참조 문자열s를 사용하여 INF 항목에 지정할 수 있습니다. I/O 관리자는 열 때마다 인터페이스 instance 이름의 경로 구성 요소로 참조 문자열 값을 전달하므로 설치된 드라이버는 단일 디바이스에 대해 동일한 클래스의 인터페이스 인스턴스를 구분할 수 있습니다.

add-interface-section
INF 파일의 다른 위치에 있는 섹션의 이름을 참조합니다. 일반적으로 이 디바이스 인터페이스 클래스의 드라이버 지원을 내보내는 레지스트리 항목을 설정하는 INF AddReg 지시문이 포함되어 있습니다. 자세한 내용은 다음 설명 섹션을 참조 하세요 .

flags
지정한 경우 이 항목은 0이어야 합니다.

설명

지정된 {InterfaceClassGUID}로 식별된 디바이스 인터페이스 클래스가 아직 설치되지 않은 경우 시스템 설치 코드는 해당 클래스를 시스템에 설치합니다. 새 클래스를 설치하는 모든 INF 파일에는 INF InterfaceInstall32 섹션이 있을 수도 있습니다. 이 섹션에는 지정된 {InterfaceClassGUID} 가 포함되어 있으며 해당 클래스에 대한 인터페이스별 설치 작업을 설정하는 interface-install-section 을 참조합니다.

상위 수준 구성 요소에서 런타임을 사용하기 위해 디바이스 인터페이스 클래스의 instance 사용하도록 설정하려면 디바이스 드라이버가 먼저 IoRegisterDeviceInterface를 호출하여 사용하도록 설정할 디바이스 인터페이스 instance 기호 링크 이름을 검색해야 합니다. 일반적으로 PnP 함수 또는 필터 드라이버는 AddDevice 루틴에서 이 호출을 수행합니다. INF에서 프로비전된 디바이스 인터페이스의 인스턴스를 사용하도록 설정하려면 디바이스 드라이버가 IoRegisterDeviceInterface를 호출할 때 INF에 지정된 {InterfaceClassGUID}참조 문자열을 제공해야 합니다. 그런 다음, 드라이버는 IoSetDeviceInterfaceState 를 호출하여 IoRegisterDeviceInterface에서 반환된 기호 링크 이름을 사용하여 인터페이스를 사용하도록 설정합니다.

INF DDInstall.Interfaces 섹션의 각 AddInterface 지시문은 INF 파일의 다른 곳에서 INF 작성기 정의 추가 인터페이스 섹션을 참조할 수 있습니다. 각 INF 작성기 정의 섹션 이름은 INF 파일 내에서 고유해야 하며 섹션 이름을 정의하기 위한 일반 규칙을 따라야 합니다. 이러한 규칙에 대한 자세한 내용은 INF 파일에 대한 일반 구문 규칙을 참조하세요.

AddInterface 지시문에서 참조하는 add-interface-section은 다음과 같은 형식입니다.

[add-interface-section]
 
AddReg=add-registry-section[, add-registry-section]...
[AddProperty=add-property-section[, add-property-section] ...]  (Windows Vista and later versions of Windows)
[DelReg=del-registry-section[, del-registry-section] ...]
[DelProperty=del-property-section[, del-property-section] ...]  (Windows Vista and later versions of Windows)
[BitReg=bit-registry-section[,bit-registry-section] ...]
[CopyFiles=@filename | file-list-section[,file-list-section]...]
[DelFiles=file-list-section[,file-list-section]...]
[RenFiles=file-list-section[,file-list-section]...]
[UpdateInis=update-ini-section[, update-ini-section] ...]
[UpdateIniFields=update-inifields-section[, update-inifields-section] ...]
[Ini2Reg=ini-to-registry-section[, ini-to-registry-section] ...]

Windows Vista부터 추가 인터페이스 섹션 에 INF AddProperty 지시문을 포함하여 디바이스 인터페이스 속성을 설정할 수 있습니다. 추가 인터페이스 섹션INF DelProperty 지시문을 포함하여 디바이스 인터페이스 속성을 삭제할 수도 있습니다. 그러나 AddProperty 또는 DelProperty 지시문을 사용하여 Windows Vista 또는 이후 버전의 Windows 운영 체제에 새로운 디바이스 인터페이스 속성을 수정해야 합니다. Windows Server 2003, Windows XP 또는 Windows 2000에서 도입되었으며 해당 레지스트리 값 항목이 있는 디바이스 인터페이스 속성의 경우 INF AddReg 지시문INF DelReg 지시문을 계속 사용하여 디바이스 인터페이스 속성을 설정하고 삭제해야 합니다. 이러한 지침은 시스템 정의 속성 및 사용자 지정 속성에 적용됩니다. AddProperty 지시문 및 DelProperty 지시문을 사용하는 방법에 대한 자세한 내용은 INF AddProperty 지시문 및 INF DelProperty 지시문 사용을 참조하세요.

일반적으로 add-interface-section에는 단일 추가 레지스트리 섹션을 참조하는 INF AddReg 지시문만 포함됩니다. add-registry-섹션은 더 높은 수준의 드라이버 및 애플리케이션에서 후속 사용을 위해 디바이스 드라이버에서 지원하는 인터페이스에 대한 정보를 레지스트리에 저장하는 데 사용됩니다.

add-interface-section 내에서 참조되는 추가 레지스트리 섹션은 디바이스, 드라이버 및 인터페이스에 대한 인스턴스와 관련이 있습니다. 내보낸 디바이스 인터페이스 instance 친숙한 이름을 정의하는 값 항목이 있을 수 있으므로 더 높은 수준의 구성 요소가 사용자 인터페이스에서 해당 인터페이스를 식별 이름으로 참조할 수 있습니다.

이러한 추가 레지스트리 섹션 섹션에 지정된 HKR은 디바이스 인터페이스에 대한 런타임 액세스 가능한 상태 레지스트리 키를 지정합니다. 드라이버는 IoOpenDeviceInterfaceRegistryKey 를 호출하여 상태 레지스트리 키에 대한 HANDLE을 검색하여 런타임에 이 레지스트리 키에 저장된 상태에 액세스할 수 있습니다. 사용자 모드 구성 요소는 CM_Open_Device_Interface_Key 호출하여 상태를 쿼리할 수 있습니다.

예제

이 예제에서는 DDInstall의 일부 확장을 보여줍니다. 시스템 정의 커널 스트리밍 인터페이스 를 지원하는 특정 오디오 디바이스에 대한 인터페이스 섹션입니다.

; ...
[ESS6881.Device.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,ESSAud.Interface.Wave
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Wave%,ESSAud.Interface.Wave
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Wave%,ESSAud.Interface.Wave
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_UART%,WDM.Interface.UART
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_UART%,WDM.Interface.UART
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_UART%,WDM.Interface.UART

[ESSAud.Interface.Wave]
AddReg=ESSAud.Interface.Wave.AddReg

[ESSAud.Interface.Wave.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%ESSAud.Wave.szPname%
; ... 
[WDM.Interface.UART]
AddReg=WDM.Interface.UART.AddReg

[WDM.Interface.UART.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%WDM.UART.szPname%
; ...
[Strings]
KSCATEGORY_AUDIO="{6994ad04-93ef-11d0-a3cc-00a0c9223196}"
KSCATEGORY_RENDER="{65e8773e-8f56-11d0-a3b9-00a0c9223196}"
KSCATEGORY_CAPTURE="{65e8773d-8f56-11d0-a3b9-00a0c9223196}"
; ...
KSNAME_WAVE="Wave"
KSNAME_UART="UART"
; ...
Proxy.CLSID="{17cca71b-ecd7-11d0-b908-00a0c9223196}"
; ... 
ESSAud.Wave.szPname="ESS AudioDrive" 
; ... 

추가 정보

AddProperty

AddReg

BitReg

CopyFiles

DDInstall. 인터페이스

DelFiles

DelProperty

DelReg

Ini2Reg

InterfaceInstall32

IoRegisterDeviceInterface

IoSetDeviceInterfaceState

RenFiles

UpdateIniFields

UpdateInis