سجل المستخدم

يوفر سجل المستخدم التعليمات البرمجية و هيكل البيانات التى تمثل بيانات العمود لمجموعة صفوف. يمكن إنشاء سجل مستخدم في وقت التحويل البرمجي أو في وقت التشغيل. عند إنشاء موفر باستخدام معالج موفر 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 في سجل مستخدم ، راجع تحديد أعمدة بشكل حيوي، يتم إرجاعها إلى المستهلك .

راجع أيضًا:

المبادئ

بنية قالب موفر OLE DB