Der Benutzerdatensatz

Der Benutzerdatensatz enthält der Code und die Datenstruktur, die die Spaltendaten für ein Rowset darstellt. Ein Benutzerdatensatz kann zur Kompilierungszeit oder zur Laufzeit erstellt werden. Wenn Sie einen Anbieter mit dem ATL-Objekt-Assistenten erstellen, erstellt der Assistent einen Standardbenutzerdatensatz, der wie folgt aussieht:

klasse CWindowsFile:
   öffentliche WIN32_FIND_DATA
{
Öffentliche:

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

}

Die OLE DB-Providervorlagen behandeln alle OLE DB-Einzelheiten über Interaktionen mit den Clients. Um die für eine Antwort benötigten Spaltendaten zu erhalten, ruft der Anbieter die GetColumnInfo -Funktion, die Sie in den Benutzer-Datensatz eingefügt werden soll:

vorlage Lt; Class T >
statische ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
 

Die PROVIDER_COLUMN_MAP -Makros-Beihilfen in Erstellen einer GetColumnInfo -Funktion:

Wenn ein Benutzerdatensatz zur Laufzeit erstellt wird, verwendet GetColumnInfo den pThis -Parameter, um einen Zeiger auf ein Rowset oder Instanz erhalten. Befehle und Rowsets müssen die IColumnsInfo -Schnittstelle unterstützen, so dass aus diesen Zeiger Spalteninformationen abgerufen werden kann.

Sie können GetColumnInfo im Benutzerdatensatz, explizit überschreiben, wie hier gezeigt:

vorlage Lt; Class T >
statische ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
 

Dies ist äquivalent zu:

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

CommandClass und RowsetClass sind die Befehls- und Rowset, die den Benutzer-Datensatz verwenden.

Ein weiteres Beispiel wie GetColumnInfo in einem Benutzerdatensatz überschrieben wird finden Sie unter Erstellen eines einfachen schreibgeschützten Anbieters.

Zurück zu den OLE DB-Provider Vorlage-Architektur

Index