Função IoOpenDeviceRegistryKey (wdm.h)
A rotina IoOpenDeviceRegistryKey retorna um identificador para um local de estado do Registro para uma instância de dispositivo específica.
NTSTATUS IoOpenDeviceRegistryKey(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG DevInstKeyType,
[in] ACCESS_MASK DesiredAccess,
[out] PHANDLE DeviceRegKey
);
[in] DeviceObject
Ponteiro para o de objeto de dispositivo físico (PDO) da instância do dispositivo para a qual o local de estado do Registro deve ser aberto.
[in] DevInstKeyType
Especifica sinalizadores que indicam se uma chave de hardware específica do dispositivo ou uma chave de software específica do driver deve ser aberta. Os sinalizadores também indicam se a chave é relativa ao perfil de hardware atual. Para obter mais informações sobre chaves de hardware e software, consulte Introdução às Chaves do Registro para Drivers.
Os sinalizadores são definidos da seguinte maneira:
Abra a chave de hardware do dispositivo, um local de estado do Registro específico do dispositivo que contém informações sobre o dispositivo. Esse sinalizador não pode ser especificado com PLUGPLAY_REGKEY_DRIVER.
Abra a chave de software do dispositivo, um local de estado do registro específico do dispositivo para armazenar informações específicas do driver. Esse sinalizador não pode ser especificado com PLUGPLAY_REGKEY_DEVICE.
Os perfis de hardware são preteridos e o estado não deve ser armazenado em relação a um perfil de hardware.
Abra uma chave relativa ao perfil de hardware atual para informações de dispositivo ou driver. Isso permite que o driver acesse informações de configuração específicas do perfil de hardware. O chamador deve especificar PLUGPLAY_REGKEY_DEVICE ou PLUGPLAY_REGKEY_DRIVER com esse sinalizador.
[in] DesiredAccess
Especifica o valor ACCESS_MASK que representa o acesso que o chamador precisa para a chave. Consulte a rotina de ZwCreateKey para obter uma descrição de cada KEY_xxx acesso à direita.
[out] DeviceRegKey
Ponteiro para um buffer alocado pelo chamador que, no retorno bem-sucedido, contém um identificador para o local de estado do Registro solicitado.
IoOpenDeviceRegistryKey retornará STATUS_SUCCESS se a chamada tiver sido bem-sucedida. Os valores de retorno de erro possíveis incluem o seguinte:
Código de retorno | Descrição |
---|---|
STATUS_INVALID_PARAMETER | Possivelmente indica que o chamador especificou um conjunto ilegal de sinalizadores DevInstKeyType ou forneceu um deviceObject que não é um PDO válido. |
O driver deve chamar ZwClose para fechar a alça retornada dessa rotina quando o acesso não for mais necessário.
As chaves do Registro abertas por essa rotina não são complicadas.
Os aplicativos de instalação no modo de usuário podem acessar essas chaves do Registro usando CM_Open_DevNode_Key ou funções de informações do dispositivo como SetupDiOpenDevRegKey ou SetupDiCreateDevRegKey.
Para preencher previamente o estado nesses locais de estado do Registro no momento da instalação do pacote de driver, use diretivas INF AddReg em um arquivo INF.
Os chamadores do IoOpenDeviceRegistryKey devem estar em execução no IRQL = PASSIVE_LEVEL no contexto de um thread do sistema.
Requisito | Valor |
---|---|
da Plataforma de Destino | Universal |
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (consulte a seção Comentários) |
regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |
introdução às chaves do Registro para drivers