MyProviderRS.h には、ユーザー レコードと呼ばれる既定の ATL オブジェクト ウィザードの作成 CWindowsFile 。2 つの処理に文字列、いずれかの編集 CWindowsFile またはここに示すように、独自のユーザー レコードを追加:
////////////////////////////////////////////////////////////////////////CAgentMan クラス: パブリック受け取る WIN32_FIND_DATADWORD dwBookmark; 特価;//これを追加TCHAR szCommand [256];//これを追加TCHAR szText [256];//これを追加TCHAR szCommand2 [256];//これを追加TCHAR szText2 [256];//これを追加{パブリック。BEGIN_PROVIDER_COLUMN_MAP(CAgentMan)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()ブール演算子 (const CAgentMan & 日) = =/これはオプションの {返す (lstrcmpi (cFileName、wf.cFileName) = = 0);}}(&N)
データ メンバー szCommand と szText の 2 つの文字列を表す szCommand2 と szText2 が必要な場合追加の列を提供します。データ メンバー dwBookmark この単に読み取り専用プロバイダーは必要ありませんが、IRowsetLocate インターフェイスを追加するには後で使用されます。= = 演算子はインスタンスを比較します。(この演算子を実装するオプションです。
2 つの文字列をサポートするには、変更もPROVIDER_COLUMN_MAP必要があります。ここに示すものを上記PROVIDER_COLUMN_MAPを交換してください。:
BEGIN_PROVIDER_COLUMN_MAP()特価;PROVIDER_COLUMN_ENTRY_STR(OLESTR("Command")、1、256、GUID_、CAgentMan、szCommand)PROVIDER_COLUMN_ENTRY_STR (OLESTR (「本文」) 2 256 guid_ CAgentMan、szText) PROVIDER_COLUMN_ENTRY_STR(OLESTR("Command2") 3 256 guid_ CAgentMan、szCommand2)PROVIDER_COLUMN_ENTRY_STR (OLESTR (「Text2」)、4、256、GUID_、CAgentMan、szText2)END_PROVIDER_COLUMN_MAP()(&N)
これが完了したら、あなたのプロバイダーをコンパイルして実行する準備が整いました。プロバイダーをテストするには、対応する機能と、消費者必要があります。単純なコンシューマーの実装このようなテスト コンシューマーの作成方法を示しています。テスト コンシューマーは、プロバイダーに実行します。[テスト コンシューマー] ダイアログ ボックスの実行ボタンをクリックすると、テスト コンシューマーが適切な文字列をプロバイダーから取得することを確認します。
正常に、プロバイダーをテストするいると、追加のインターフェイスを実装することによってその機能を強化する可能性があります。次のセクションで、単純な読み取り専用プロバイダーを強化する例です。