Enregistrement utilisateur
Remarque
L’Assistant Fournisseur OLE DB ATL n’est pas disponible dans Visual Studio 2019 et versions ultérieures.
L’enregistrement utilisateur fournit la structure de code et de données qui représente les données de colonne pour un ensemble de lignes. Un enregistrement d’utilisateur peut être créé au moment de la compilation ou au moment de l’exécution. Lorsque vous créez un fournisseur à l’aide de l’Assistant Fournisseur OLE DB ATL, l’Assistant crée un enregistrement utilisateur par défaut qui ressemble à ceci (en supposant que vous avez spécifié un nom de fournisseur [nom court] de 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()
};
Les modèles du fournisseur OLE DB gèrent toutes les particularités de OLE DB sur les interactions avec le client. Pour acquérir les données de colonne nécessaires pour une réponse, le fournisseur appelle la fonction GetColumnInfo
que vous devez placer dans l’enregistrement utilisateur. Vous pouvez remplacer explicitement GetColumnInfo
dans l’enregistrement utilisateur, par exemple, en le déclarant dans le fichier .h comme illustré ici :
template <class T>
static ATLCOLUMNINFO* GetColumnInfo(T* pThis, ULONG* pcCols)
Cela équivaut à :
static ATLCOLUMNINFO* GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
static ATLCOLUMNINFO* GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)
Ensuite, implémentez GetColumnInfo
dans le fichier .cpp de l’enregistrement utilisateur.
Les macros PROVIDER_COLUMN_MAP facilitent la création d’une fonction GetColumnInfo
:
BEGIN_PROVIDER_COLUMN_MAP définit le prototype de fonction et un tableau statique de structures
ATLCOLUMNINFO
.PROVIDER_COLUMN_ENTRY définit et initialise un seul
ATLCOLUMNINFO
.END_PROVIDER_COLUMN_MAP ferme le tableau et la fonction. Il place également le nombre d’éléments de tableau dans le paramètre pcCols.
Lorsqu’un enregistrement utilisateur est créé au moment de l’exécution, GetColumnInfo
utilise le pThis
paramètre pour recevoir un pointeur vers un ensemble de lignes ou une instance de commande. Les commandes et les ensembles de lignes doivent prendre en charge l’interface IColumnsInfo
afin que les informations de colonne puissent être prises à partir de ce pointeur.
CommandClass
et RowsetClass
sont la commande et l’ensemble de lignes qui utilisent l’enregistrement utilisateur.
Pour obtenir un exemple plus détaillé concernant le remplacement de GetColumnInfo
dans un enregistrement utilisateur, consultez Déterminer de manière dynamique des colonnes retournées au consommateur.