سجل المستخدم
يوفر سجل المستخدم التعليمات البرمجية و هيكل البيانات التى تمثل بيانات العمود لمجموعة صفوف. يمكن إنشاء سجل مستخدم في وقت التحويل البرمجي أو في وقت التشغيل. عند إنشاء موفر باستخدام معالج موفر ATL OLE DB ، يقوم المعالج بإنشاء سجل مستخدم افتراضي يبدو مثل هذا (مع افتراض أنك حددت اسم الموفر [الاسم القصير ] "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()
};
قوالب موفر OLE DB تعالج كافة مواصفات OLE DB فيما يتعلق بالتفاعلات مع العميل. الحصول على بيانات العمود المطلوبة لاستجابة ، يقوم الموفر باستدعاء الدالة GetColumnInfo ، التى يجب أن تضعها في سجل المستخدم. يمكنك صراحةً تجاوز GetColumnInfo في سجل المستخدم، على سبيل المثال، عن طريق التصريح به في ملف .h كما هو موضح هنا:
template <class T>
static ATLCOLUMNINFO* GetColumnInfo(T* pThis, ULONG* pcCols)
هذا مكافئ ل:
static ATLCOLUMNINFO* GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
static ATLCOLUMNINFO* GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)
يجب أيضاً تطبيق GetColumnInfo في ملف .cpp الخاص بسجل المستخدم .
وحدات الماكرو PROVIDER_COLUMN_MAP تساعد في إنشاء دالة GetColumnInfo :
يعرّف BEGIN_PROVIDER_COLUMN_MAP النموذج الأولي للدالة و صفيف ثابت لهياكل ATLCOLUMNINFO .
يعرّف PROVIDER_COLUMN_ENTRY و يهيئ ATLCOLUMNINFO واحد .
إغلاق END_PROVIDER_COLUMN_MAP يغلق الصفيف و الدالة. و يضع أيضاً عدد عناصر الصفيف فى المعلمة pcCols .
عند إنشاء سجل مستخدم في وقت التشغيل، يستخدم GetColumnInfo المعلمة pThis لاستقبال مؤشر لمجموعة الصفوف أو مثيل الأمر . يجب أن تدعم مجموعة الصفوف و الأوامر واجهة IColumnsInfo بحيث يمكن الحصول على معلومات العمود من هذا المؤشر.
CommandClass و RowsetClass هي الأمر و مجموعة الصفوف التي تستخدم سجل المستخدم.
للحصول على مثال أكثر تفصيلاً حول كيفية تجاوز GetColumnInfo في سجل مستخدم ، راجع تحديد أعمدة بشكل حيوي، يتم إرجاعها إلى المستهلك .