カスタム ハンドラの作成

既定の RDS サポートを使用する IIS サーバー管理者がユーザーの要求とアクセス権に対する管理を強化する場合は、独自のハンドラを作成することができます。

MSDFMAP.Handler は、IDataFactoryHandler インターフェイスを実装しています。

IDataFactoryHandler インターフェイス

このインターフェイスには、GetRecordsetReconnect の 2 つのメソッドがあります。どちらのメソッドでも、CursorLocation プロパティを adUseClient に設定する必要があります。

どちらのメソッドでも、"Handler=" キーワード内の最初のカンマの後に引数を指定します。たとえば、"Handler=progid,arg1,arg2;" では引数文字列 "arg1,arg2" を渡し、"Handler=progid" では Null 引数を渡します。

GetRecordset メソッド

このメソッドは、データ ソースにクエリを実行し、指定された引数を使用して新規 Recordset オブジェクトを作成します。Recordset は、adLockBatchOptiimistic を設定して開く必要があります。また、非同期で開いてはいけません。

引数

conn   接続文字列です。

args   ハンドラ用の引数です。

query   クエリを作成するためのコマンド テキストです。

ppRS   Recordset を返す場所を示すポインタです。

Reconnect メソッド

このメソッドはデータ ソースを更新します。このメソッドで新規 Connection オブジェクトが作成され、指定した Recordset が添付されます。

引数

conn   接続文字列です。

args   ハンドラ用の引数です。

pRS   Recordset オブジェクトです。

msdfhdl.idl

次は、msdfhdl.idl ファイル内の IDataFactoryHandler 用のインターフェイス定義です。

[
  uuid(D80DE8B3-0001-11d1-91E6-00C04FBBBFB3),
  version(1.0)
]
library MSDFHDL
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");

    // TLib : Microsoft ActiveX Data Objects 2.0 Library
    // {00000200-0000-0010-8000-00AA006D2EA4}
    #ifdef IMPLIB
    importlib("implib\\x86\\release\\ado\\msado15.dll");
    #else
    importlib("msado20.dll");
    #endif

    [
      odl,
      uuid(D80DE8B5-0001-11d1-91E6-00C04FBBBFB3),
      version(1.0)
    ]
    interface IDataFactoryHandler : IUnknown
    {
HRESULT _stdcall GetRecordset(
        [in] BSTR conn,
        [in] BSTR args,
        [in] BSTR query,
        [out, retval] _Recordset **ppRS);

// DataFactory will use the ActiveConnection property
// on the recordset after calling Reconnect.
    HRESULT _stdcall Reconnect(
        [in] BSTR conn,
        [in] BSTR args,
        [in] _Recordset *pRS);
    };
};