此頁沒有內(nèi)容條目
內(nèi)容

編寫自己的自定義處理程序

如果您是需要默認(rèn) RDS 支持的 IIS 服務(wù)器管理員,但需要進(jìn)一步控制用戶請(qǐng)求和訪問權(quán)限,則可能需要編寫自己的處理程序。

MSDFMAP.Handler 實(shí)現(xiàn) IDataFactoryHandler 接口。

IDataFactoryHandler 接口

該接口有兩種方法,即 GetRecordsetReconnect。兩種方法都要求將 CursorLocation 屬性設(shè)置為 adUseClient

兩種方法都取“Handler=”關(guān)鍵詞的第一個(gè)逗號(hào)后面出現(xiàn)的參數(shù)。例如,“Handler=progid,arg1,arg2;”將傳遞“arg1,arg2”的參數(shù)字符串,而“Handler=progid”將傳遞參數(shù) NULL。

GetRecordset 方法

該方法使用提供的參數(shù)查詢數(shù)據(jù)源并創(chuàng)建新的 Recordset 對(duì)象。Recordset 必須使用 adLockBatchOptimistic 打開,不能異步打開。

參數(shù)

conn   連接字符串。

args   處理程序參數(shù)。

query   產(chǎn)生查詢所用的命令文本。

ppRS   指向返回 Recordset 的位置。

Reconnect 方法

該方法更新數(shù)據(jù)源。它創(chuàng)建新的 Connection 對(duì)象,并附加給定的 Recordset。

參數(shù)

conn   連接字符串。

args   處理程序參數(shù)。

pRS   Recordset 對(duì)象。

msdfhdl.idl

這是出現(xiàn)在 msdfhdl.idl 文件中對(duì) 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 將在調(diào)用 Reconnect 后

// 使用記錄集的 ActiveConnection 屬性。

   HRESULT _stdcall Reconnect(

      [in] BSTR conn,

      [in] BSTR args,

      [in] _Recordset *pRS);

    };

};