Rekordu użytkownika
Rekord użytkownika zawiera strukturę kodu i danych, reprezentujący dane z kolumn dla zestawu wierszy.Rekord użytkownika można tworzyć w czasie kompilacji lub w czasie wykonywania.Podczas tworzenia dostawcy kreatora ATL OLE DB Provider, Kreator tworzy domyślną rekordu użytkownika, który wygląda następująco (przy założeniu, że określona nazwa dostawcy [nazwa krótka] z "MyProvider"):
class CWindowsFile:
public WIN32_FIND_DATA
{
public:
BEGIN_PROVIDER_COLUMN_MAP(CMyProviderWindowsFile)
PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes)
PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh)
PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow)
PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName)
PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()
};
Szablony dostawcy OLE DB obsłużyć wszystkie szczegóły OLE DB dotyczące interakcji z klientem.Uzyskanie danych kolumny potrzebne odpowiedzi, dostawca wywołuje GetColumnInfo funkcji, które należy umieścić w rekordzie użytkownika.Można zastąpić jawnie GetColumnInfo w rekordzie użytkownika, na przykład poprzez uznanie go w pliku .h jak pokazano poniżej:
template <class T>
static ATLCOLUMNINFO* GetColumnInfo(T* pThis, ULONG* pcCols)
Jest to równoważne:
static ATLCOLUMNINFO* GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
static ATLCOLUMNINFO* GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)
Musi też implementować GetColumnInfo w pliku .cpp rekordu użytkownika.
Makra PROVIDER_COLUMN_MAP pomocy w tworzeniu GetColumnInfo funkcji:
BEGIN_PROVIDER_COLUMN_MAP definiuje prototyp funkcji i statycznych tablica ATLCOLUMNINFO struktury.
PROVIDER_COLUMN_ENTRY definiuje i inicjuje pojedynczego ATLCOLUMNINFO.
END_PROVIDER_COLUMN_MAP zamyka tablicy i funkcji.Umieszcza też licznik elementu tablicy, do pcCols parametru.
Podczas tworzenia rekordu użytkownika w czasie wykonywania, GetColumnInfo używa pThis parametru, aby otrzymać wskaźnik do wystąpienia zestawu wierszy lub polecenia.Polecenia i zestawów wierszy musi obsługiwać IColumnsInfo interfejsu, więc informacje o kolumnie można otrzymać ten wskaźnik.
CommandClass i RowsetClass są polecenia i wierszy, które używają rekordu użytkownika.
Aby uzyskać bardziej szczegółowe przykład zastąpić GetColumnInfo w rekordzie użytkownika, zobacz Dynamicznie określenia kolumn zwracana do konsumenta.