Record utente fornisce la struttura di codice e dati che rappresenta i dati della colonna per un set di righe. Un Record utente può essere creato in fase di compilazione o in fase di esecuzione. Quando si crea un Provider mediante la creazione guidata oggetto, la procedura guidata crea un record utente predefinito che assomiglia a questo:
classe CWindowsFile:
pubblica WIN32_FIND_DATA
{
pubblica:
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()
}
I modelli Provider OLE DB di gestire tutte le specifiche OLE DB per quanto riguarda le interazioni con il cliente. Per acquisire i dati necessari per una risposta della colonna, il provider chiama la funzione GetColumnInfo , che è necessario inserire nel Record utente:
modello lt; classe t >
statico ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
L'aiuto di macro PROVIDER_COLUMN_MAP nella creazione di una funzione GetColumnInfo:
Una volta creato un Record utente in fase di esecuzione, GetColumnInfo utilizza il parametro pThis per ricevere un puntatore a un'istanza di set di righe o comando. I comandi e i set di righe deve supportare l'interfaccia IColumnsInfo , così colonna informazioni possono essere ottenute da questo puntatore.
È possibile ignorare esplicitamente GetColumnInfo nel Record utente, come illustrato di seguito:
modello lt; classe t >
statico ATLCOLUMNINFO * GetColumnInfo(T* pThis, ULONG* pcCols)
Ciò equivale a:
statico ATLCOLUMNINFO * GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
statico ATLCOLUMNINFO * GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)
CommandClass e RowsetClass sono il comando e il set di righe che utilizzano il Record utente.
Per un ulteriore esempio di come eseguire l'override di GetColumnInfo in un Record utente, vedere creazione di un Provider semplice di sola lettura.