Dela via


Plugin-program för gränssnittshanterare

Du kan skriva en insticksmodul för gränssnittshanterarens för att ge programmatisk användarlägesåtkomst till en drivrutinsspecifik egenskapsuppsättning som exponeras av en KS-minidrivrutin. Registrera först objektet enligt beskrivningen i Registrera KS Proxy-plugin-program.

Plugin-klassen för gränssnittet kan härledas från CUnknown:

class CMyPluginInterface : public CUnknown
{
public:
    // creation method
    static CUnknown* CALLBACK CreateInstance( LPUNKNOWN piOuterUnknown, HRESULT* phResult );
private:
 CMyPluginInterface( IKsPropertySet* piKsPropertySet );
    IKsPropertySet* m_piKsPropertySet;
};

Plugin-programmet för gränssnittet är ett COM-gränssnitt som tillhandahålls av leverantören och som sammanställs med den MS-tillhandahållna KS-proxyn vid skapandetillfället.

Mer specifikt tar metoden CreateInstance i plugin-programmet emot en pekare till KS-proxyn som en yttre okänd.

Du kan sedan fråga det här yttre objektet om du vill ha en pekare till IKsPropertySet-gränssnittet som tillhandahålls av MS:

hResult = piOuterUnknown->QueryInterface(
                __uuidof( piKsPropertySet ),
                 &piKsPropertySet );

Från CreateInstance anropar du sedan konstruktorn för ditt gränssnitt för att skapa en instans av gränssnittets hanteringsobjekt.

Ange pekaren till IKsPropertySet som en parameter i konstruktorns anrop. Konstruktorn behåller sedan pekaren till iKsPropertySet som m_piKsPropertySet medlem i föregående deklaration.

Nu kan du implementera get- och set-metoder i klassen som anropar IKsPropertySet::Get och IKsPropertySet::Ange för att ändra egenskaper som exponeras av drivrutinen.

Alternativt kan du fråga objektet som inte är känt för en pekare till dess IKsObject-gränssnitt. Anropa sedan IKsObject::KsGetObjectHandle för att hämta en filreferens. Nu kan du ändra enhetsegenskaper genom att anropa KsSynchronousIoControlDevice med det här filhandtaget.