Registro do usuário

O registro de usuário fornece a estrutura de código e dados que representa a coluna de dados de um conjunto de linhas.Um registro de usuário pode ser criado em tempo de compilação ou em tempo de execução.Quando você criar um provedor usando o ATL OLE DB Provider Wizard, o assistente cria um registro de usuário padrão tem esta aparência (supondo que você especificou um nome de provedor [nome abreviado] de "MyProvider"):

class CWindowsFile:
   public WIN32_FIND_DATA
{
public:

BEGIN_PROVIDER_COLUMN_MAP(CMyProviderWindowsFile)
   PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes)
   PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh)
   PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow)
   PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName)
   PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()

};

Os modelos de provedor do OLE DB tratam todas as especificações OLE DB sobre interações com o cliente.Para obter os dados de coluna necessários para uma resposta, o provedor chama o GetColumnInfo função, que você deve colocar no registro do usuário.Você pode substituir explicitamente GetColumnInfo no registro do usuário, por exemplo, por declará-la no arquivo. h como mostrado aqui:

template <class T>
static ATLCOLUMNINFO* GetColumnInfo(T* pThis, ULONG* pcCols) 

Isso é equivalente a:

static ATLCOLUMNINFO* GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
static ATLCOLUMNINFO* GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)

Você também deve implementar GetColumnInfo no arquivo. cpp do registro de usuário.

As macros PROVIDER_COLUMN_MAP auxiliam na criação de um GetColumnInfo função:

  • BEGIN_PROVIDER_COLUMN_MAP define o protótipo de função e um conjunto estático de ATLCOLUMNINFO estruturas.

  • PROVIDER_COLUMN_ENTRY define e inicializa um único ATLCOLUMNINFO.

  • END_PROVIDER_COLUMN_MAP fecha a matriz e a função.Ele também coloca a contagem de elemento de matriz para o pcCols parâmetro.

Quando um registro de usuário é criado em tempo de execução GetColumnInfo usa o pThis parâmetro para receber um ponteiro para uma instância de comando ou de linhas.Comandos e conjuntos de linhas devem oferecer suporte a IColumnsInfo interface, para que as informações de coluna podem ser obtidas esse ponteiro.

Pkgmkcampo e RowsetClass são o conjunto de linhas que usam o registro de usuário e o comando.

Para um exemplo mais detalhado de como substituir GetColumnInfo em um registro de usuário, consulte Dinamicamente determinar colunas retornadas para o consumidor.

Consulte também

Conceitos

Arquitetura de modelo de provedor de BD OLE