Compartilhar via


Função WdfFdoInitOpenRegistryKey (wdffdo.h)

[Aplica-se a KMDF e UMDF]

O método WdfFdoInitOpenRegistryKey abre a chave de hardware de um dispositivo ou a chave de software de um driver no registro e cria um objeto de chave do Registro de estrutura que representa a chave do Registro.

Sintaxe

NTSTATUS WdfFdoInitOpenRegistryKey(
  [in]           PWDFDEVICE_INIT        DeviceInit,
  [in]           ULONG                  DeviceInstanceKeyType,
  [in]           ACCESS_MASK            DesiredAccess,
  [in, optional] PWDF_OBJECT_ATTRIBUTES KeyAttributes,
  [out]          WDFKEY                 *Key
);

Parâmetros

[in] DeviceInit

Um ponteiro para uma estrutura WDFDEVICE_INIT que o driver obteve de sua função de retorno de chamada EvtDriverDeviceAdd .

[in] DeviceInstanceKeyType

Especifica qual chave ou subchave abrir.

Observação

O UMDF não dá suporte à criação de subchaves.

Esse é um OR bit a bit dos sinalizadores a seguir (que são definidos em Wdm.h).

Sinalizador DeviceInstanceKeyType Significado Estrutura
PLUGPLAY_REGKEY_DEVICE Abre a chave de hardware do dispositivo. KMDF/UMDF
PLUGPLAY_REGKEY_DRIVER Abre a chave de software do driver. Um driver UMDF que define esse sinalizador também deve definir DesiredAccess como KEY_READ. Caso contrário, esse método retornará STATUS_ACCESS_DENIED. KMDF/UMDF
PLUGPLAY_REGKEY_CURRENT_HWPROFILE Um driver KMDF usa esse sinalizador para abrir a cópia da chave de hardware ou software que está no perfil de hardware atual. KMDF
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY Um driver UMDF usa esses sinalizadores juntos para abrir a subchave ServiceName da chave de software do driver para acesso de leitura/gravação. UMDF
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY Da mesma forma, um driver UMDF usa esses sinalizadores para abrir a subchave ServiceName da chave de hardware do dispositivo para acesso de leitura/gravação. UMDF

[in] DesiredAccess

Um valor de tipo ACCESS_MASK que especifica os direitos de acesso que o driver está solicitando para a chave do Registro especificada.

Um driver KMDF normalmente solicita KEY_READ, KEY_WRITE ou KEY_READ | KEY_WRITE.

Se você estiver escrevendo um driver UMDF, use a tabela a seguir.

DeviceInstanceKeyType DesiredAccess
PLUGPLAY_REGKEY_DEVICE KEY_READ
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY KEY_READ ou KEY_READ | KEY_SET_VALUE
PLUGPLAY_REGKEY_DRIVER KEY_READ
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY KEY_READ ou KEY_READ | KEY_SET_VALUE
 

Como prática recomendada, peça apenas os tipos de acesso que seu driver precisa.

[in, optional] KeyAttributes

Um ponteiro para uma estrutura WDF_OBJECT_ATTRIBUTES que contém atributos fornecidos pelo driver para o novo objeto registry-key. Esse parâmetro é opcional e pode ser WDF_NO_OBJECT_ATTRIBUTES.

[out] Key

Um ponteiro para um local que recebe um identificador para o novo objeto de chave do Registro.

Retornar valor

WdfFdoInitOpenRegistryKey retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, o método poderá retornar um dos seguintes valores:

Código de retorno Descrição
STATUS_INVALID_DEVICE_REQUEST

WdfFdoInitOpenRegistryKey não foi chamado em IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Um parâmetro inválido foi especificado ou o driver não obteve a estrutura WDFDEVICE_INIT de sua função de retorno de chamada EvtDriverDeviceAdd . Para UMDF, esse valor retornado pode indicar direitos de acesso insuficientes.
STATUS_INSUFFICIENT_RESOURCES
Não foi possível alocar um objeto de chave do Registro.
STATUS_OBJECT_NAME_NOT_FOUND
A chave do Registro especificada não existe.
 

Para obter uma lista de outros valores retornados que o método WdfFdoInitOpenRegistryKey pode retornar, consulte Erros de criação de objeto de estrutura.

O método também pode retornar outros valores NTSTATUS.

Comentários

O driver deve chamar WdfFdoInitOpenRegistryKey antes de chamar WdfDeviceCreate. Para obter mais informações sobre como chamar WdfDeviceCreate, consulte Criando um objeto de dispositivo de estrutura.

Para obter mais informações sobre o método WdfFdoInitOpenRegistryKey , consulte Criando objetos de dispositivo em um driver de função.

ou mais informações sobre o registro, chaves de hardware e software e objetos do Registro, consulte Usando o Registro em drivers de Framework-Based.

Exemplos

O exemplo de código a seguir abre a chave de hardware de um dispositivo, com acesso de leitura.

WDFKEY key;
NTSTATUS status;

status = WdfFdoInitOpenRegistryKey(
                                   DeviceInit,
                                   PLUGPLAY_REGKEY_DEVICE,
                                   GENERIC_READ,
                                   WDF_NO_OBJECT_ATTRIBUTES,
                                   &key
                                   );
if (!NT_SUCCESS(status)) {
    return status;
}

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho wdffdo.h (include Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

WdfDeviceOpenRegistryKey

WdfDriverOpenParametersRegistryKey