ユーザー レコード

ユーザー レコードは、行セットの列データを表すコードとデータ構造体を提供します。ユーザー レコードは、コンパイル時または実行時に作成できます。ATL オブジェクト ウィザードを使用してプロバイダーを作成すると、ウィザードは次のような既定のユーザー レコードが作成されます。:

クラス cwindowsfile を:パブリック受け取る WIN32_FIND_DATA{パブリック。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 (「ファイル名」、4、cFileName)PROVIDER_COLUMN_ENTRY (「AltFileName」5、cAlternateFileName)END_PROVIDER_COLUMN_MAP()}

OLE DB プロバイダー テンプレートは、すべての OLE DB 仕様は、クライアントとの相互作用に関する処理します。応答を必要な列データを取得するには、プロバイダーのユーザー レコードを配置する必要があります、 GetColumnInfo関数を呼び出し:

テンプレート lt; T クラス >静的 ATLCOLUMNINFO ※ GetColumnInfo(T* pThis, ULONG* pcCols)
 

GetColumnInfo関数を作成するPROVIDER_COLUMN_MAPマクロ援助:

実行時に、ユーザー レコードが作成されると、 GetColumnInfo pThisパラメーターを使用して、行セットまたはコマンド インスタンスへのポインターを受信します。列情報はこのポインターから取得することができますのでコマンドと行セットは必ず IColumnsInfoインターフェイスをサポートする必要があります。

ここで示すように、ユーザー レコードでGetColumnInfoを明示的にオーバーライドすることができます。:

テンプレート lt; T クラス >静的 ATLCOLUMNINFO ※ GetColumnInfo(T* pThis, ULONG* pcCols)
 

これと同じです。:

静的 ATLCOLUMNINFO ※ GetColumnInfo(CommandClass* pThis, ULONG* pcCols)静的 ATLCOLUMNINFO ※ GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)

CommandClassとRowsetClassコマンドと行セットは、ユーザー レコードを使用します。

追加ユーザー レコードでGetColumnInfoをオーバーライドする方法の例については、単純な読み取り専用プロバイダーの作成を参照してください。

OLE DB プロバイダー テンプレートのアーキテクチャに戻る

Index