共用方式為


屬性頁外掛程式

您可以將屬性頁寫入為 KS Proxy 外掛程式,以提供裝置屬性的使用者介面。 本主題說明如何撰寫這類外掛程式。 首先,註冊物件,如 註冊 KS Proxy 外掛程式中所述。

接下來,宣告篩選準則的 Factory 範本。 Factory 範本是 C++ 類別,其中包含類別處理站的資訊。

在您的 DLL 中,宣告 CFactoryTemplate物件的全域陣列,一個用於 DLL 中的每個篩選或 COM 元件。 如果您只有一個屬性頁,請在陣列中建立一個物件。

針對每個物件,產生類別識別碼的 GUID (CLSID) ,並在宣告中提供專案。

陣列必須命名g_Templates:

CFactoryTemplate g_Templates[] =
{
    {
        L"My Property Page",
        &CLSID_MyPropPage),
        CMyPropPage::CreateInstance,
        NULL,
        NULL
    },
};

您的屬性頁應該衍生自 CBasePropertyPage 類別,而且應該覆寫 CBasePropertyPage的數種方法:

class CMyPropPage: public CBasePropertyPage
{
public:
    // creation routine returns ptr to new prop pg as a CUnknown
    static CUnknown* CreateInstance( LPUNKNOWN piOuterUnknown, HRESULT* phResult );

    // overridden methods:
    HRESULT OnConnect( IUnknown *punk);
    HRESULT OnDisconnect();
    HRESULT OnApplyChanges();
    HRESULT OnActivate();
    HRESULT OnDeactivate();
    INT_PTR OnReceiveMessage( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
private:
    CMyPropPage ( LPUNKNOWN piOuterUnknown );
};

若要初始化屬性頁,主控屬性工作表會呼叫 IPropertyPage::SetPageSite。 此呼叫會產生外掛程式 OnConnect 方法的呼叫。 在此呼叫時,屬性頁已連線到篩選,但屬性頁尚未顯示。

呼叫 OnConnect時所提供的參數是 KS Proxy 的介面,接著可以查詢IKsPropertySet的指標。 然後,您可以呼叫 IKsPropertySet::GetIKsPropertySet::Set ,以操作驅動程式的公開屬性。

您也必須提供 CreateInstance 方法。 系統會叫用屬性頁的 方法來建立屬性頁的實例。 這個方法應該呼叫 類別的建構函式來具現化它。

建構函式會接收外部未知介面的指標,在此案例中為 KS Proxy。

當屬性頁應該釋放相關聯的物件時,會呼叫屬性頁的 OnDisconnect 方法。 此回呼應該藉由呼叫其 Release 方法,將介面指標上的參考計數遞減至 KS Proxy。