Métodos de propriedade interface

Muitas interfaces ADSI foram projetadas para dar suporte à Automação e, portanto, são interfaces duplas, pois dão suporte ao acesso ao cliente por meio de interfaces IUnknown e IDispatch . Clientes que não são de Automação, como aqueles escritos em C/C++, resolve invocação de método diretamente, usando o método IUnknown::QueryInterface e chamam o método diretamente. Os clientes de automação, também conhecidos como clientes associados ao nome, como aqueles escritos no Visual Basic ou VBScript (Visual Basic Scripting Edition), devem resolve invocação de método indiretamente usando o método dispinterface.

Uma interface ADSI que dá suporte à Automação define métodos de propriedade para recuperar e modificar propriedades de um objeto que implementa a interface. Os métodos de propriedade têm nomes que têm get_ e put_ anexados aos nomes de propriedade apropriados, por exemplo, get_User e put_Name.

Cada método get_ usa um único parâmetro como saída. Esse parâmetro é um endereço alocado pelo método de uma variável do tipo de dados de propriedade. No retorno, essa variável pressupõe o valor atual da propriedade solicitada. O chamador deve liberar a memória alocada da variável quando a propriedade não for mais necessária.

Cada método put_ usa um único parâmetro como entrada para o tipo de dados da propriedade correspondente. O parâmetro contém um novo valor da propriedade .

O exemplo de código a seguir mostra a invocação dos métodos de propriedade que seguem o procedimento usual para chamar a função membro de um objeto .

IADs *pADs;
BSTR bstrName;
pADs->get_Name(&bstrName);

O exemplo de código a seguir mostra a invocação dos métodos de propriedade em clientes de automação, o que pode ser um pouco diferente. Por exemplo, o Visual Basic usa notação de ponto.

Dim Obj As IADs
Dim objName As String
objName = Obj.Name

Todos os parâmetros e tipos de retorno devem ser aqueles definidos pelo tipo de dados VARIANT. Todos os métodos em uma interface dupla retornam um valor HRESULT para indicar êxito ou falha.

Para obter mais informações sobre como obter e definir propriedades em objetos ADSI, consulte Cache de Propriedades.