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.