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