Rekord użytkownika zawiera struktury kodu i danych, który reprezentuje dane z kolumn dla zestawu wierszy. Rekordu użytkownika mogą być tworzone w czasie kompilacji lub w czasie wykonywania. Podczas tworzenia dostawcę przy użyciu Kreatora obiektu ATL, Kreator utworzy rekordu użytkownika domyślnego, który wygląda tak:
klasa CWindowsFile:
WIN32_FIND_DATA publiczne
{
publiczne:
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 ("nazwa_pliku", 4, cFileName)
PROVIDER_COLUMN_ENTRY ("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()
}
Szablony dostawcy bazy danych OLE obsługują wszystkie OLE DB szczegóły dotyczące interakcje z klientem. Uzyskanie danych kolumny potrzebne do odpowiedzi, dostawca wywołuje funkcję GetColumnInfo , która musi umieścić w rekordu użytkownika:
lt szablonu; Klasa T >
statyczne ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
PROVIDER_COLUMN_MAP makra pomocy w tworzeniu funkcji GetColumnInfo:
Po utworzeniu rekordu użytkownika w czasie wykonywania GetColumnInfo użyto parametru pThis do otrzymywania wskaźnik instancję zestawu rekordów lub polecenie. Polecenia i zestawów wierszy musi obsługiwać interfejs IColumnsInfo , więc kolumny informacji można uzyskać od tego wskaźnika.
GetColumnInfo rekordu użytkownika, można zastąpić wyraźnie, jak pokazano tutaj:
lt szablonu; Klasa T >
statyczne ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
Jest to odpowiednik:
statyczne ATLCOLUMNINFO * GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
statyczne ATLCOLUMNINFO * GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)
CommandClass i RowsetClass są polecenia i wierszy, które używają rekordu użytkownika.
Dodatkowe przykład sposobu zastąpienia GetColumnInfo w rekordu użytkownika zobacz Tworzenie prostych dostawcy otwieraniu.