Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo destina-se a ser um guia de consulta rápida para ajudá-lo a atualizar um arquivo INF para seguir de isolamento do pacote de driver como parte da atualização do pacote de driver para um de Driver do Windows. As seções a seguir fornecem exemplos de algumas das coisas mais comuns que você pode ter em seu arquivo INF do pacote de driver com referências a informações sobre como atualizá-los para serem compatíveis com o isolamento do pacote de driver. Se o seu pacote de driver precisar suportar a maneira antiga de fazer algo para versões mais antigas do sistema operacional enquanto usa a nova maneira em versões mais recentes do sistema operacional, consulte Combinando extensões de plataforma com versões do sistema operacional para saber como conseguir isso em um INF.
DestinationDirs não é DIRID 13
Se a seção DestinationDirs especificar um destino para ficheiros que não seja o DIRID 13, o INF não é compatível com o isolamento do pacote de drivers. Todos os arquivos no pacote de driver devem ser executados a partir do Driver Store o que significa usar DIRID 13. Isso pode exigir atualizações para mais do que apenas a seção DestinationDirs. Outras operações realizadas pelo INF que se referem a arquivos carregados pelo INF também podem precisar de atualização. Por exemplo, talvez seja necessário atualizar a diretiva ServiceBinary em uma seção de instalação de serviço referenciada por uma diretiva AddService ou um valor do Registro escrito por uma diretiva AddReg. Em geral, a execução a partir do Driver Store é suportada no Windows 10 1709 e versões posteriores do Windows, mas algumas pilhas de dispositivos podem não suportar que os arquivos associados a essas pilhas sejam executados a partir do Driver Store até uma versão posterior. Para obter mais informações, consulte executado a partir da Loja de Drivers.
Usando AddReg para registrar provedores ETW e canais EventLog
Se o INF usa uma diretiva AddReg para registrar um provedor ETW e canais EventLog, então o INF não é compatível com o isolamento do pacote de driver. Por exemplo, o seu INF pode ter:
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\ExampleProvider/Analytic", "OwningPublisher", 0x0, "{35356277-0b54-43da-b324-671006d74759}"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\ExampleProvider/Analytic", "Enabled", 0x00010001, 1
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\ExampleProvider/Analytic", "Isolation", 0x00010001, 1
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\ExampleProvider/Analytic", "ChannelAccess",0x0, \
"O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x3;;;BO)(A;;0x5;;;SO)(A;;0x1;;;IU)(A;;0x3;;;SU)(A;;0x1;;;S-1-5-3)(A;;0x2;;;S-1-5-33)(A;;0x1;;;S-1-5-32-573)"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\ExampleProvider/Analytic", "Type", 0x00010001, 2
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-0b54-43da-b324-671006d74759}" , , 0x0, "ExampleProvider"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-0b54-43da-b324-671006d74759}", "ResourceFileName", 0x00020000, "%13%\ExampleBinary.sys"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-0b54-43da-b324-671006d74759}", "MessageFileName", 0x00020000, "%13%\ExampleBinary.sys"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-0b54-43da-b324-671006d74759}\ChannelReferences\0", , 0x0, "ExampleProvider/Analytic"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-0b54-43da-b324-671006d74759}\ChannelReferences\0", "Id", 0x00010001, 16
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-0b54-43da-b324-671006d74759}\ChannelReferences\0", "Flags", 0x00010001, 0
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-0b54-43da-b324-671006d74759}\ChannelReferences", Count, 0x00010001, 1
Em vez de usar um AddReg para registar provedores ETW e canais EventLog, eles devem ser registados através de uma diretiva AddEventProvider existente na seção DDInstall.Events. Por exemplo:
[ExampleDDInstall.Events]
AddEventProvider={35356277-0b54-43da-b324-671006d74759}, Example_EVvntProvider_Inst
[Example_EventProvider_Inst]
ProviderName=ExampleProvider
ResourceFile=%13%\ExampleBinary.sys
MessageFile=%13%\ExampleBinary.sys
AddChannel=ExampleProvider/Analytic,0x3,Example_Channel_Inst ; Note that the type of the channel here is different than in the raw AddReg. Please see the AddEventProvider documentation for appropriate values
[Example_Channel_Inst]
Isolation=1
Access="O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x3;;;BO)(A;;0x5;;;SO)(A;;0x1;;;IU)(A;;0x3;;;SU)(A;;0x1;;;S-1-5-3)(A;;0x2;;;S-1-5-33)(A;;0x1;;;S-1-5-32-573)"
Enabled=1
Value=16
O uso de uma diretiva AddEventProvider de uma seção DDInstall.Events é suportado no Windows 10 1809 e versões posteriores do Windows.
Usando AddReg para registrar um AutoLogger
Se o seu INF utilizar uma diretiva AddReg para registar ou modificar um ETW AutoLogger, então o INF não está em conformidade com o isolamento do pacote de drivers. Por exemplo, o seu INF pode ter:
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger, BufferSize, %REG_DWORD%, 0x00000040
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger, GUID, %REG_SZ%, "{6f1373c7-eec8-495c-bfe5-1270336368df}"
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger, Start, %REG_DWORD%, 0x00000001
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger, MaximumBuffers, %REG_DWORD%, 0x00000040
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger, LogFileMode, %REG_DWORD%, 0x400
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger\{35356277-0b54-43da-b324-671006d74759}, EnableLevel, %REG_DWORD%, 0x00000004
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger\{35356277-0b54-43da-b324-671006d74759}, MatchAnyKeyword, %REG_QWORD%, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger\{35356277-0b54-43da-b324-671006d74759}, Enabled, %REG_DWORD%, 0x00000001
Em vez de usar um AddReg para registrar ou atualizar um AutoLogger, ele deve ser registrado ou atualizado usando um diretiva AddAutoLogger ou UpdateAutoLogger de uma seção DDInstall.Events. Por exemplo:
[ExampleDDInstall.Events]
AddAutoLogger=ExampleAutoLogger,{6f1373c7-eec8-495c-bfe5-1270336368df},Example_AutoLogger_Inst
[Example_AutoLogger_Inst]
Start=1
BufferSize = 0x40
LogFileMode=0x400
MaximumBuffers=0x40
AddAutoLoggerProvider={35356277-0b54-43da-b324-671006d74759},Example_AutoLoggerProvider_Inst
[Example_AutoLoggerProvider_Inst]
Enabled=1
EnableLevel=0x4
MatchAnyKeyword=0
O uso da diretiva AddAutoLogger ou UpdateAutoLogger de uma seção DDInstall.Events é suportado no Windows 11 e em versões posteriores do Windows.
Usando AddReg para adicionar uma entrada à chave RunOnce
Se o seu INF usar uma diretiva AddReg para adicionar uma entrada à chave RunOnce, então o INF não está em conformidade com o isolamento do pacote de drivers. Por exemplo, o seu INF pode ter:
[ExampleDDInstall]
AddReg = Example_Registry
[Example_Registry]
HKLM, Software\Microsoft\Windows\CurrentVersion\RunOnce, ExampleEntry, ,"application.exe"
Isso não é suportado. Um INF não deve modificar entradas de registo global. Se uma ação de configuração única for necessária quando o pacote de driver estiver instalado, você poderá usar uma diretiva AddSoftware de dentro de um de arquivo INF de componente para iniciá-lo. Isto é apenas para ações não críticas. A funcionalidade crítica para o dispositivo ou dispositivos instalados com este pacote de driver não deve depender de ações que estão sendo executadas que são externas à instalação do dispositivo.
Usando AddReg para adicionar uma entrada à chave Run
Se o INF usa uma diretiva AddReg para adicionar uma entrada à chave Run, então o INF não é compatível com o isolamento do pacote de driver. Por exemplo, o seu INF pode ter:
[ExampleDDInstall]
AddReg = Example_Registry
[Example_Registry]
HKLM, Software\Microsoft\Windows\CurrentVersion\Run, ExampleEntry, ,"application.exe"
Isso não é suportado. Um INF não deve modificar entradas de registo globais. Se a entrada Run for para agregar valor agregado ao sistema, seu aplicativo deverá ser um aplicativo da Plataforma Universal do Windows e instalado usando uma diretiva AddSoftware de uma seção DDInstall.Software. Para obter mais informações, consulte Emparelhar um driver com um aplicativo da Plataforma Universal do Windows (UWP). Se este software for um serviço que não precisa apresentar nenhuma interface do usuário, um serviço Win32 pode ser registrado a partir do pacote de drivers com uma diretiva AddService . Ao registrar um serviço associado a um dispositivo, o serviço só deve estar em execução quando o dispositivo estiver presente. O serviço deve ter um tipo de início de 'início de demanda' e deve usar uma diretiva AddTrigger da seção de instalação do serviço para configurar os gatilhos que farão com que o serviço seja iniciado quando o dispositivo estiver presente no sistema. Isso é feito identificando uma interface de dispositivo que o driver no dispositivo irá expor e usando a diretiva AddTrigger para especificar que o serviço deve ser iniciado quando esse hardware aparecer. Durante a execução, o serviço deve monitorizar para o caso de o dispositivo deixar de funcionar. Se o dispositivo for removido do sistema para que o serviço não precise continuar em execução, o serviço deve parar. Para se inscrever para receber notificações de chegada e remoção da interface do dispositivo, consulte CM_Register_Notification.
Usando CopyFiles para adicionar arquivos aos diretórios 'Arquivos de Programas'
Se o seu INF usa uma diretiva CopyFiles para adicionar arquivos aos diretórios 'Arquivos de Programas', então o INF não é compatível com o isolamento do pacote de driver. Isso inclui, mas não está limitado a, uso dos DIRIDs 16422, 16426, 16427 e 16428. Por exemplo, o seu INF pode ter:
[DestinationDirs]
Example_CopyFiles = 16422, Contoso
[ExampleDDInstall]
CopyFiles = Example_CopyFiles
[Example_CopyFiles]
ExampleFile.exe
Isso não é suportado. Um INF não deve copiar arquivos para locais globais. Os diretórios 'Arquivos de Programas' são normalmente usados para instalar aplicativos de software, não drivers. Se o seu objetivo é criar e fornecer um aplicativo complementar para o seu dispositivo que se comunique com o controlador, consulte a orientação do aplicativo de suporte de hardware . Por exemplo, seu aplicativo pode ser um aplicativo da Plataforma Universal do Windows e instalado usando uma diretiva AddSoftware de uma seção DDInstall.Software. Consulte Emparelhar um driver com uma aplicação da Plataforma Universal do Windows (UWP) para conseguir mais informações. Se a entrada CopyFiles não for para adicionar uma aplicação complementar ao sistema e se os ficheiros devem permanecer como parte do pacote de driver, eles precisam ser configurados para serem 'executados a partir da Loja de Drivers'.
CoInstaller que inicia a interface do usuário
Se o seu INF usa um CoInstaller para instalar um aplicativo com o qual o usuário deve interagir, então o INF não é compatível com o isolamento do pacote de driver. Por exemplo, o seu INF pode registar um CoInstaller como este:
[ExampleDDInstall.CoInstallers]
CopyFiles = CoInstallerCopyFilesSection
AddReg = Example_CoInstallers_AddReg
[CoInstallerCopyFilesSection]
ExampleCoInstall.dll
[Example_CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"ExampleCoInstall.dll,ExampleCoInstallEntryPoint"
Para obter informações sobre como lidar com essa situação, consulte Removendo coinstaladores de pacotes de driver.
Usando AddReg para modificar um serviço que não é adicionado pelo INF
Se o INF usa uma diretiva AddReg para modificar o estado de um serviço que não é adicionado por uma diretiva AddService em seu INF, então o INF não é compatível com o isolamento do pacote de driver. Por exemplo, o seu INF pode ter:
[ExampleDDInstall]
AddReg = Example_Registry
[Example_Registry]
HKLM,SYSTEM\CurrentControlSet\Services\ServiceNotCreatedByThisInf\ExampleKey, ExampleValue, %REG_DWORD%, 1
Isso não é suportado. Um INF só deve alterar as configurações nos serviços criados por esse INF e o INF deve remover este AddReg.
Usando AddReg para modificar o estado intrínseco de um serviço
Se o INF usa uma diretiva AddReg para modificar o estado de serviço intrínseco, então o INF não é compatível com o isolamento do pacote de driver. Estado de serviço intrínseco é o estado sobre o serviço que é gerenciado pelo Gerenciador de Controle de Serviço. Isto inclui, mas não está limitado a:
- Nome para exibição
- Descrição
- Caminho da imagem
- Tipo
- Tipo de início
- Controlo de erros
- Grupo de ordem de carregamento
- Dependências
- Informações de segurança
- Privilégios necessários
- Tipo de SID
- Configuração de início automático atrasada
- Gatilhos
- Ações de falha
- Sinalizadores de inicialização
Por exemplo, o seu INF pode ter:
[ExampleDDInstall.Services]
AddService = ExampleService,0,Example_Service_Inst
[Example_Service_Inst]
DisplayName = %SvcDesc%
ServiceType = %SERVICE_WIN32_OWN_PROCESS%
StartType = %SERVICE_DEMAND_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %13%\ExampleService.exe
AddReg = Example_Service_Registry
[Example_Service_Registry]
HKR,TriggerInfo\0,Type,0x00010001,0x01
HKR,TriggerInfo\0,Action,0x00010001,0x01
HKR,TriggerInfo\0,Guid,0x00000001,2D,DF,41,BD,DD,AD,C9,4F,A1,94,B9,88,1D,2A,2E,FA
HKR,,ServiceSidType,0x00010001,0x01
Para ser compatível com o isolamento do pacote de driver, você precisa usar as diretivas INF internas para especificar esse estado, conforme descrito em diretiva AddService.
Usando AddReg para modificar o estado na raiz de um serviço
Se o INF usa uma diretiva AddReg para criar chaves ou valores na raiz do estado de um serviço, então o INF não é compatível com o isolamento do pacote de driver. Por exemplo, o seu INF pode ter:
[ExampleDDInstall.Services]
AddService = ExampleService,0x2,Example_Service_Inst
[Example_Service_Inst]
DisplayName = %SvcDesc%
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_DEMAND_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %13%\ExampleBinary.sys
AddReg = Example_Service_Registry
[Example_Service_Registry]
HKR,,ExampleValue,%REG_DWORD%,0x00000040
HKR,CustomSubkey,ExampleValue,%REG_DWORD%,0x00000040
Para ser compatível com o isolamento do pacote de driver, uma diretiva AddReg que fornece chaves e valores do Registro de serviço só pode modificar chaves e valores na subchave Parâmetros do serviço.
Se o INF estiver criando ou modificando outro estado sob a raiz do serviço, as configurações precisarão ser movidas sob a subchave Parameters do serviço e a subchave Parameters poderá ser acessada em tempo de execução com IoOpenDriverRegistryKey usando um RegKeyType de DriverRegKeyParameters. IoOpenDriverRegistryKey é suportado no Windows 10 1803 e versões posteriores do Windows.
Usando HKCR AddReg para registrar um APO
Se o INF usa uma diretiva AddReg com uma raiz de registro HKCR para registrar um objeto de processamento de áudio (APO), então o INF não é compatível com o isolamento do pacote de driver. Por exemplo, o seu INF pode ter:
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "FriendlyName", , %APO_FriendlyName%
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "Copyright", , %MfgName%
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "MajorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "MinorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "Flags", 0x00010001, 0x0000000d
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "MinInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "MaxInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "MinOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "MaxOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "MaxInstances", 0x00010001, 0xffffffff
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "NumAPOInterfaces", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "APOInterface0", , "{b0a50980-ded6-4f45-84cb-19d2d1245f6d}"
Em vez disso, as informações de registro do APO devem estar em uma seção referenciada por uma diretiva AddReg de uma seção DDInstall. A raiz do registro HKCR deve ser alterada para uma raiz do registro HKR para colocar as configurações relativas ao local do estado do registro "software" (também conhecido como "driver") do dispositivo. Para obter mais informações, consulte Registar APOs para Modos e Efeitos de Processamento no ficheiro INF.
Versão do driver UMDF é inferior a 2
Se o pacote de driver carregar um driver de doUser-Mode Driver Framework (UMDF) que usa uma versão UMDF anterior à versão 2, ele não é compatível com "Drivers do Windows". Para obter mais informações sobre como mover o driver UMDF para uma versão UMDF mais recente, consulte Portando um driver de UMDF 1 para UMDF 2.
Usando AddReg para adicionar um filtro superior ou inferior a uma pilha de dispositivos
Se o INF usa uma diretiva AddReg para adicionar um filtro superior ou inferior a uma pilha de dispositivos, então o INF não é compatível com o isolamento do pacote de driver. Por exemplo, o seu INF pode ter:
[ExampleDDInstall.HW]
AddReg = FilterAddReg
[FilterAddReg]
HKR,,"UpperFilters",0x00010000,"ExampleFilterDriver" ; REG_MULTI_SZ value
Em vez disso, o filtro deve ser adicionado à pilha de dispositivos usando a diretiva AddFilter. Por exemplo:
[ExampleDDInstall.Filters]
AddFilter = ExampleFilterDriver,, ExampleFilterSection
[ExampleFilterSection]
FilterPosition = Upper
Consulte ordem dos drivers de filtro de dispositivos para obter mais detalhes sobre como adicionar filtros de dispositivos.
Utilizar AddReg para registar os valores do Nome da Categoria de Mídia
Se o INF utilizar uma diretiva AddReg para registar um valor de Nome de Categoria de Mídia, então o INF não está em conformidade com o isolamento do pacote de drivers. Por exemplo, o seu INF pode ter:
[ExampleDDInstall]
AddReg=MediaCategoryRegistration
[MediaCategoryRegistration]
HKLM,SYSTEM\CurrentControlSet\Control\MediaCategories\%ExampleGuid%,Name,,%ExampleName%
Em vez de usar um AddReg para registrar um nome de categoria de mídia no local de registro global, eles devem ser registrados no estado relativo do dispositivo usando um AddReg HKR da seção DDInstall. Por exemplo:
[ExampleDDInstall]
AddReg=MediaCategoryRegistration
[MediaCategoryRegistration]
HKR,MediaCategories\%ExampleGuid%,Name,,%ExampleName%
O uso do estado relativo do dispositivo para registrar nomes de categoria de mídia é suportado no Windows 10, versão 1809 e versões posteriores do Windows. Consulte Nomes amigáveis para dispositivos de ponto de extremidade de áudio para obter mais informações.
Usando AddReg para registrar valores de exibição de categoria de mídia
Se o INF usa uma diretiva AddReg para registrar um valor de exibição de categoria de mídia, então o INF não é compatível com o isolamento do pacote de driver. Por exemplo, o seu INF pode ter:
[ExampleDDInstall]
AddReg=MediaCategoryRegistration
[MediaCategoryRegistration]
HKLM,SYSTEM\CurrentControlSet\Control\MediaCategories\%ExampleGuid%,Display,1,00,00,00,00
Este valor não é utilizado e deve ser removido do INF.
Utilização do AddReg para registar os valores de DmaSecurity\AllowedBuses
Se o INF usa uma diretiva AddReg para especificar valores na chave do registo HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses, então o INF não é compatível com o isolamento do pacote de driver. Por exemplo, o seu INF pode ter:
[ExampleDDInstall]
AddReg=DmaSecurityRegistration
[DmaSecurityRegistration]
HKLM,SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses,"Example Friendly Name Description",0,PCI\VEN_ABCD&DEV_0123
A partir do Windows 11, versão 24H2, esse valor não é usado e deve ser removido do INF. Consulte os requisitos de hardware para a criptografia automática de dispositivos BitLocker para mais informações.