如果您是需要默認(rèn) RDS 支持的 IIS 服務(wù)器管理員,但需要進(jìn)一步控制用戶請(qǐng)求和訪問權(quán)限,則可能需要編寫自己的處理程序。
MSDFMAP.Handler 實(shí)現(xiàn) IDataFactoryHandler 接口。
該接口有兩種方法,即 GetRecordset 和 Reconnect。兩種方法都要求將 CursorLocation 屬性設(shè)置為 adUseClient。
兩種方法都取“Handler=”關(guān)鍵詞的第一個(gè)逗號(hào)后面出現(xiàn)的參數(shù)。例如,“Handler=progid,arg1,arg2;”將傳遞“arg1,arg2”的參數(shù)字符串,而“Handler=progid”將傳遞參數(shù) NULL。
該方法使用提供的參數(shù)查詢數(shù)據(jù)源并創(chuàng)建新的 Recordset 對(duì)象。Recordset 必須使用 adLockBatchOptimistic 打開,不能異步打開。
參數(shù)
conn 連接字符串。
args 處理程序參數(shù)。
query 產(chǎn)生查詢所用的命令文本。
ppRS 指向返回 Recordset 的位置。
該方法更新數(shù)據(jù)源。它創(chuàng)建新的 Connection 對(duì)象,并附加給定的 Recordset。
參數(shù)
conn 連接字符串。
args 處理程序參數(shù)。
pRS Recordset 對(duì)象。
這是出現(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);
};
};