El registro de usuario

El registro de usuario proporciona el código y estructura de datos que representa los datos de columna de un conjunto de filas. Puede crear un registro de usuario en tiempo de compilación o en tiempo de ejecución. Cuando se crea un proveedor utilizando al Asistente para objetos ATL, el asistente crea un registro de usuario por defecto que este aspecto:

clase 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()

}

Las plantillas de proveedor OLE DB manejar todos los detalles de OLE DB con respecto a las interacciones con el cliente. Para adquirir los datos de columna necesarios para una respuesta, el proveedor llama a la función GetColumnInfo , que debe colocar en el registro de usuario:

plantilla lt; clase t >
estática ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
 

La ayuda de las macros PROVIDER_COLUMN_MAP en la creación de una función GetColumnInfo:

Cuando se crea un registro de usuario en tiempo de ejecución, GetColumnInfo utiliza el parámetro pThis para recibir un puntero a una instancia de conjunto de filas o comando. Comandos y conjuntos de filas deben admitir la interfaz IColumnsInfo , así que puede obtenerse información de la columna de este puntero.

Puede reemplazar explícitamente GetColumnInfo en el registro de usuario, como se muestra aquí:

plantilla lt; clase t >
estática ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
 

Esto es equivalente a:

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

CommandClass y RowsetClass son el mando y el conjunto de filas que utilizan el registro de usuario.

Un ejemplo adicional de cómo reemplazar GetColumnInfo en un registro de usuario, vea crear un proveedor sencillo de sólo lectura.

Volver a la arquitectura de plantilla de proveedor DB OLE

Index