Записи пользователя обеспечивает структуру кода и данных, представляющая данные столбца для набора строк. Записи пользователя могут быть созданы во время компиляции или во время выполнения. При создании поставщика с помощью мастера объектов ATL, мастер создает запись пользователя по умолчанию, который выглядит так:
класс CWindowsFile:
государственные WIN32_FIND_DATA
{
общественности:
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 ("имя_файла", 4, cFileName)
PROVIDER_COLUMN_ENTRY ("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()
}
Шаблоны поставщика OLE DB обрабатывают всю специфику OLE DB относительно взаимодействия с клиентом. Для получения необходимых для отклика данных столбца поставщик вызывает функцию GetColumnInfo , которую необходимо поместить в пользовательскую запись:
шаблон lt; класс t >
статический ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
PROVIDER_COLUMN_MAP макросы помощь в создании функции GetColumnInfo:
Когда запись пользователя создается во время выполнения, GetColumnInfo использует параметр pThis для получения указателя на экземпляр набора строк или команды. Команд и наборов строк должны поддерживать интерфейс IColumnsInfo , поэтому можно получить сведения о столбцах этого указателя.
Можно явно переопределить GetColumnInfo в пользовательской записи, как показано здесь:
шаблон lt; класс t >
статический ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
Это эквивалентно:
статический ATLCOLUMNINFO * GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
статический ATLCOLUMNINFO * GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)
CommandClass и RowsetClass являются команды и набор строк, используется запись пользователя.
Другой пример как переопределить GetColumnInfo в записи пользователя содержатся в разделе Создание простого поставщика только для чтения.