Share via


Função PcNewRegistryKey (portcls.h)

A função PcNewRegistryKey abre ou cria uma nova chave do Registro e cria um objeto IRegistryKey para representar a chave. O chamador acessa a chave por meio desse objeto.

Sintaxe

PORTCLASSAPI NTSTATUS PcNewRegistryKey(
  [out]           PREGISTRYKEY       *OutRegistryKey,
  [in, optional]  PUNKNOWN           OuterUnknown,
  [in]            ULONG              RegistryKeyType,
  [in]            ACCESS_MASK        DesiredAccess,
  [in, optional]  PVOID              DeviceObject,
  [in, optional]  PVOID              SubDevice,
  [in, optional]  POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional]  ULONG              CreateOptions,
  [out, optional] PULONG             Disposition
);

Parâmetros

[out] OutRegistryKey

Ponteiro de saída para o objeto de chave do Registro criado por essa função. Esse parâmetro aponta para uma variável de ponteiro alocada pelo chamador na qual a função gera o ponteiro para o objeto IRegistryKey . O objeto representa a chave do Registro que está sendo aberta ou criada. Especifique um valor de ponteiro não NULL válido para esse parâmetro.

[in, optional] OuterUnknown

Ponteiro para a interface IUnknown de um objeto que precisa agregar o objeto OutRegistryKey . A menos que a agregação seja necessária, defina esse parâmetro como NULL.

[in] RegistryKeyType

Especifica o tipo de chave do Registro que o chamador deseja criar ou abrir. Para obter mais informações, consulte a seção Comentários a seguir.

[in] DesiredAccess

Especifica uma máscara de controle de acesso. Esse parâmetro é uma estrutura do tipo ACCESS_MASK. Indica o tipo de acesso que o chamador está solicitando para a chave do Registro que deve ser aberta ou criada. Para obter mais informações, consulte a seção Comentários a seguir.

[in, optional] DeviceObject

Ponteiro para o objeto de dispositivo do driver do adaptador. Esse ponteiro é convertido no tipo PVOID. Se RegistryKeyType for qualquer valor diferente de GeneralRegistryKey, esse parâmetro deverá apontar para uma estrutura de sistema válida e inicializada do tipo DEVICE_OBJECT. Se o valor de RegistryKeyType for GeneralRegistryKey, a função PcNewRegistryKey não usará esse parâmetro. Para obter mais informações, consulte a seção Comentários a seguir.

[in, optional] SubDevice

Especifica o aspecto do dispositivo que deve ser oferecido aos clientes. Os drivers do adaptador devem atribuir o valor NULL a esse parâmetro.

[in, optional] ObjectAttributes

Ponteiro para os atributos de objeto da chave que está sendo criada ou aberta. Se RegistryKeyType tiver o valor GeneralRegistryKey, esse parâmetro deverá apontar para uma estrutura de sistema válida e inicializada do tipo OBJECT_ATTRIBUTES com uma cadeia de caracteres ObjectName válida para a chave; caso contrário, a função não usará esse parâmetro. Para obter mais informações, consulte a seção Comentários a seguir.

[in, optional] CreateOptions

Especifica as opções de criação. Pode ser zero se nenhum for desejado. Se RegistryKeyType não for GeneralRegistryKey, a função PcNewRegistryKey ignorará esse parâmetro. Para obter mais informações, consulte a seção Comentários a seguir.

[out, optional] Disposition

Ponteiro para uma variável que recebe um valor que indica se uma chave foi criada ou se uma chave existente foi aberta. Esse parâmetro é opcional e pode ser especificado como NULL. Se RegistryKeyType for qualquer valor diferente de GeneralRegistryKey, a função PcNewRegistryKey ignorará esse parâmetro. Para obter mais informações, consulte a seção Comentários a seguir.

Retornar valor

PcNewRegistryKey retornará STATUS_SUCCESS se a chamada tiver sido bem-sucedida. Caso contrário, ele retornará um código de erro apropriado.

Comentários

Se o valor do parâmetro RegistryKeyType for GeneralRegistryKey, a função PcNewRegistryKey abrirá uma chave existente ou criará uma nova chave no Registro, conforme indicado pelo valor que a função gera por meio do parâmetro Disposition . Se a chave for de qualquer tipo diferente de GeneralRegistryKey, a função abrirá uma chave já existente que foi criada anteriormente durante Plug and Play enumeração do dispositivo.

Os parâmetros DesiredAccess, ObjectAttributes, CreateOptions e Disposition assumem os valores definidos para os parâmetros com os mesmos nomes na chamada ZwCreateKey .

O parâmetro RegistryKeyType deve ser definido como um dos valores de enumeração mostrados na tabela a seguir.

Valor registryKeyType Significado
GeneralRegistryKey Forneça acesso genérico a qualquer tipo de chave. Abra a chave especificada se ela já existir ou crie a chave se ela não existir.
DeviceRegistryKey Abra uma chave existente que contém informações específicas do dispositivo. A chave está localizada sob a chave da instância do dispositivo especificada por DeviceObject.
DriverRegistryKey Abra uma chave existente que contém informações específicas do driver.
HwProfileRegistryKey Abra uma chave existente em relação ao perfil de hardware atual que contém informações de dispositivo ou driver. Isso permite que o driver acesse informações de configuração específicas do perfil de hardware.
DeviceInterfaceRegistryKey Não usado com PcNewRegistryKey. Consulte IPort::NewRegistryKey para obter detalhes.
 

Para um valor RegistryKeyType de GeneralRegistryKey, o chamador deve fornecer um valor de parâmetro ObjectAttributes válido e os parâmetros CreateOptions e Disposition são opcionais. Para qualquer outro valor RegistryKeyType , o chamador deve fornecer um valor de parâmetro DeviceObject válido e os parâmetros CreateOptions e Disposition não são usados.

O parâmetro ObjectAttributes aponta para uma estrutura opaca do tipo OBJECT_ATTRIBUTES que contém atributos de objeto, como o nome da chave e o descritor de segurança. Use a macro InitializeObjectAttributes para inicializar a estrutura. No parâmetro Atributos dessa macro, defina o sinalizador OBJ_KERNEL_HANDLE, a menos que você pretenda permitir que aplicativos não seguros no modo de usuário tenham acesso de leitura/gravação à chave do Registro.

O parâmetro DesiredAccess é uma máscara de controle de acesso. Ele especifica o tipo de controle de acesso que o chamador precisa ter para a nova chave do Registro ao acessá-la por meio do objeto OutRegistryKey . Essa máscara não deve ser confundida com a ACL (lista de controle de acesso) que controla o acesso dos usuários à chave do Registro. Ao chamar PcNewRegistryKey para criar uma chave do Registro do tipo GeneralRegistryKey, o parâmetro ObjectAttributes especifica os atributos da chave, incluindo um descritor de segurança que contém a ACL. No entanto, se a nova chave for do tipo GeneralRegistryKey e o ponteiro do descritor de segurança na estrutura ObjectAttributes for NULL ou o ponteiro ACL no descritor de segurança for NULL, a nova chave herdará a ACL da chave pai por padrão.

Se a chave for de qualquer tipo diferente de GeneralRegistryKey, a chave manterá a ACL que Plug and Play atribuída à chave quando ela foi criada durante a enumeração do dispositivo.

A função PcNewRegistryKey é semelhante ao método IPort::NewRegistryKey , exceto pelo fato de que o objeto do dispositivo e o objeto de porta devem ser especificados explicitamente em uma chamada PcNewRegistryKey , mas são simplesmente implícitos em uma chamada NewRegistryKey . PcNewRegistryKey é usado principalmente por drivers de adaptador. Em vez disso, os drivers de miniporto normalmente chamam NewRegistryKey .

Os parâmetros OutRegistryKey e OuterUnknown seguem as convenções de contagem de referência para objetos COM.

Requisitos

Requisito Valor
Cliente mínimo com suporte O driver do sistema PortCls implementa a função PcNewRegistryKey no Microsoft Windows 98/Me e no Windows 2000 e em sistemas operacionais posteriores.
Plataforma de Destino Universal
Cabeçalho portcls.h (inclua Portcls.h)
Biblioteca Portcls.lib
IRQL PASSIVE_LEVEL

Confira também

ACCESS_MASK

DEVICE_OBJECT

IPort::NewRegistryKey

IRegistryKey

InitializeObjectAttributes

OBJECT_ATTRIBUTES

ZwCreateKey