Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Co najmniej jedną dyrektywę AddInterface można określić w sekcji INF DDInstall.Interfaces. Ta dyrektywa instaluje obsługę klas interfejsów urządzeń eksportowanych do składników wyższego poziomu, takich jak inne sterowniki lub aplikacje. Dyrektywa zwykle odwołuje się do sekcji add-interface-section , która konfiguruje informacje rejestru dla wystąpienia specyficznego dla urządzenia klasy interfejsu urządzenia.
[DDInstall.Interfaces]
AddInterface={InterfaceClassGUID} [,[reference-string] [,[add-interface-section][,flags]]]
Wyeksportowana klasa interfejsu urządzenia może być jedną z klas interfejsu urządzenia zdefiniowanego przez system, takich jak klasy zdefiniowane przez przesyłanie strumieniowe jądra lub nowa klasa interfejsu urządzenia określona przez sekcję INF InterfaceInstall32.
Wpisy
InterfaceClassGUID
Określa wartość identyfikatora GUID identyfikującą klasę interfejsu urządzenia. Można to wyrazić jako jawną wartość identyfikatora GUID formularza {nn--nnnn nnnn-- nn}lub jako %strkey% token zdefiniowany do "{nn-nnnn-- nnnn - nn}" w sekcji Ciągi pliku INF.
Aby uzyskać więcej informacji na temat tworzenia identyfikatora GUID, zobacz Używanie identyfikatorów GUID w sterownikach. W przypadku identyfikatorów GUID klasy interfejsu zdefiniowanego przez system zobacz odpowiedni nagłówek, taki jak Ks.h dla identyfikatorów GUID interfejsu przesyłania strumieniowego jądra.
ciąg odwołania
Ta opcjonalna wartość skojarzona z konkretnym wystąpieniem określonej klasy interfejsu może być wyrażona jako "ciąg cytowany" lub jako %token % strkey zdefiniowany w sekcji Ciągi INF.
Funkcja PnP i sterowniki filtrów zwykle pomijają tę wartość z pozycji AddInterface= w swoich plikach INF. Ciąg odwołania jest używany przez sterownik swenum jako symbol zastępczy dla urządzeń oprogramowania tworzonych na żądanie przy użyciu wielu wystąpień pojedynczej klasy interfejsu. Tę samą wartość InterfaceClassGUID można określić w wpisach INF z co najmniej dwoma unikatowymi ciągami odwołania. Ponieważ menedżer we/wy przekazuje wartość ciągu odwołania jako składnik ścieżki nazwy wystąpienia interfejsu za każdym razem, gdy jest otwarty, zainstalowany sterownik może dyskryminować wystąpienia interfejsu tej samej klasy dla jednego urządzenia.
add-interface-section
Odwołuje się do nazwy sekcji w innym miejscu w pliku INF. Zazwyczaj zawiera on dyrektywę INF AddReg , aby skonfigurować wpisy rejestru eksportujące obsługę tego sterownika tej klasy interfejsu urządzenia. Aby uzyskać więcej informacji, zobacz następującą sekcję Uwagi .
flags
Jeśli zostanie określony, ten wpis musi mieć wartość zero.
Remarks
Jeśli klasa interfejsu urządzenia zidentyfikowana przez określony element {InterfaceClassGUID} nie jest już zainstalowana, kod instalacji systemu instaluje klasę w systemie. Każdy plik INF, który instaluje nową klasę, może również mieć sekcję INF InterfaceInstall32. Ta sekcja zawiera określony element {InterfaceClassGUID} i odwołuje się do sekcji interface-install- , która konfiguruje operacje instalacji specyficzne dla interfejsu dla tej klasy.
Aby umożliwić wystąpienie klasy interfejsu urządzenia na potrzeby użycia w czasie wykonywania przez składniki wyższego poziomu, sterownik urządzenia musi najpierw wywołać metodę IoRegisterDeviceInterface , aby pobrać symboliczną nazwę łącza wystąpienia interfejsu urządzenia, aby włączyć. Zazwyczaj funkcja PnP lub sterownik filtru wykonuje to wywołanie z procedury AddDevice . Aby włączyć wystąpienia interfejsów urządzeń aprowizowane w inf, sterownik urządzenia musi podać {InterfaceClassGUID} i ciąg odwołania określony w INF, gdy wywołuje interfejs IoRegisterDeviceInterface. Następnie sterownik wywołuje element IoSetDeviceInterfaceState , aby włączyć interfejs przy użyciu nazwy łącza symbolicznego zwróconej przez interfejs IoRegisterDeviceInterface.
Każda dyrektywa AddInterface w sekcji INF DDInstall.Interfaces może odwoływać się do sekcji add-interface-defined INF w pliku INF. Każda nazwa sekcji zdefiniowanej przez moduł zapisywania INF musi być unikatowa w pliku INF i musi być zgodna z ogólnymi regułami definiowania nazw sekcji. Aby uzyskać więcej informacji na temat tych reguł, zobacz Ogólne reguły składni dla plików INF.
Sekcja add-interface-referenced by the AddInterface dyrektywy ma następujący formularz:
[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] ...]
Począwszy od Windows Vista, można ustawić właściwości interfejsu urządzenia, włączając dyrektywy INF AddProperty w sekcji add-interface. Właściwości interfejsu urządzenia można również usunąć, włączając dyrektywy INF DelProperty w sekcji add-interface. Jednak należy użyć dyrektyw AddProperty lub DelProperty tylko do modyfikowania właściwości interfejsu urządzenia, które są nowe do Windows Vista lub nowszej wersji systemów operacyjnych Windows. W przypadku właściwości interfejsu urządzenia, które zostały wprowadzone w Windows Server 2003, Windows XP lub Windows 2000 i które mają odpowiednie wpisy wartości rejestru, należy nadal używać dyrektyw INF AddReg i dyrektyw INF DelReg, aby ustawić i usunąć właściwości interfejsu urządzenia. Te wytyczne dotyczą właściwości zdefiniowanych przez system i właściwości niestandardowych. Aby uzyskać więcej informacji na temat używania dyrektywy AddProperty i dyrektywy DelProperty, zobacz Using the INF AddProperty Directive and the INF DelProperty Directive (Korzystanie z dyrektywy INF AddProperty) i INF DelProperty Directive (Korzystanie z dyrektywy INF AddProperty).
Zazwyczaj sekcja add-interface-section zawiera tylko dyrektywę INF AddReg , która z kolei odwołuje się do pojedynczej sekcji add-registry-section. Sekcja add-registry-służy do przechowywania informacji w rejestrze o interfejsach obsługiwanych przez sterownik urządzenia do późniejszego użycia przez sterowniki i aplikacje wyższego poziomu.
Sekcja add-registry-referenced w sekcji add-interface-jest specyficzna dla wystąpień urządzenia, sterownika i interfejsu. Może mieć wpis wartości definiujący przyjazną nazwę dla wyeksportowanego wystąpienia interfejsu urządzenia, dzięki czemu nadal składniki wyższego poziomu mogą odwoływać się do tego interfejsu za pomocą przyjaznej nazwy w interfejsie użytkownika.
Klucz HKR określony w takiej sekcji add-registry-section wyznacza klucz rejestru stanu dostępny w czasie wykonywania dla interfejsu urządzenia. Sterownik może uzyskać dostęp do stanu przechowywanego w tym kluczu rejestru w czasie wykonywania, wywołując element IoOpenDepenDeviceInterfaceRegistryKey w celu pobrania do klucza rejestru stanu. Składniki trybu użytkownika mogą wykonywać zapytania dotyczące stanu przez wywołanie CM_Open_Device_Interface_Key.
Examples
W tym przykładzie pokazano niektóre rozszerzenia DDInstall. Sekcja Interfejsy dla określonego urządzenia audio obsługującego interfejsy przesyłania strumieniowego jądra zdefiniowanego przez system.
; ...
[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"
; ...