Registro do usuário

Registro do usuário fornece a estrutura de dados e código que representa os dados de coluna para um conjunto de linhas. Um registro de usuário pode ser criado em tempo de compilar ou em tempo de execução. Quando você cria um provedor usando o Assistente de objeto ATL, o assistente cria um registro de usuário padrão que se parece com isso:

classe CWindowsFile:
   WIN32_FIND_DATA pública
{
público:

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

}

O OLE DB provedor modelos lidar com 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 a função GetColumnInfo , que você deve colocar no registro do usuário:

modelo lt; classe t >
estático ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
 

A ajuda de macros PROVIDER_COLUMN_MAP na criação de uma função GetColumnInfo:

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

Você pode explicitamente substituir GetColumnInfo do registro de usuário, como mostrado aqui:

modelo lt; classe t >
estático ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
 

Isso é equivalente a:

estático ATLCOLUMNINFO * GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
estático ATLCOLUMNINFO * GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)

CommandClass e RowsetClass são o comando e o conjunto de registros que usam o registro do usuário.

Para um exemplo adicional de como substituir GetColumnInfo em um registro de usuário, consulte Criando um provedor de somente leitura simples.

Voltar para a OLE DB Provedor modelo arquitetura

Index