인터페이스 처리기 플러그 인
인터페이스 처리기 플러그 인을 작성하여 KS 미니드라이버에 의해 노출되는 드라이버별 속성 집합에 프로그래밍 방식의 사용자 모드 액세스를 제공할 수 있습니다. 먼저 KS 프록시 플러그 인 등록에 설명된 대로 개체를 등록합니다.
인터페이스 플러그 인 클래스는 CUnknown에서 파생할 수 있습니다.
class CMyPluginInterface : public CUnknown
{
public:
// creation method
static CUnknown* CALLBACK CreateInstance( LPUNKNOWN piOuterUnknown, HRESULT* phResult );
private:
CMyPluginInterface( IKsPropertySet* piKsPropertySet );
IKsPropertySet* m_piKsPropertySet;
};
인터페이스 플러그 인은 생성 시 MS 제공 KS 프록시를 사용하여 집계하는 공급업체에서 제공하는 COM 인터페이스입니다.
특히 플러그 인의 CreateInstance 메서드는 KS 프록시에 대한 포인터를 알 수 없는 외부로 수신합니다.
그런 다음, MS 제공 IKsPropertySet 인터페이스에 대한 포인터에 대해 이 외부 개체를 쿼리할 수 있습니다.
hResult = piOuterUnknown->QueryInterface(
__uuidof( piKsPropertySet ),
&piKsPropertySet );
그런 다음 CreateInstance에서 인터페이스의 생성자를 호출하여 인터페이스 처리기 개체의 instance 만듭니다.
IKsPropertySet에 대한 포인터를 생성자 호출 시 매개 변수로 제공합니다. 그런 다음 생성자는 iKsPropertySet에 대한 포인터를 이전 선언의 m_piKsPropertySet 멤버로 유지합니다.
이제 드라이버에서 노출되는 속성을 조작하기 위해 각각 IKsPropertySet::Get 및 IKsPropertySet::Set 을 호출하는 Get 및 Set 메서드를 클래스에 구현할 수 있습니다.
또는 IKsObject 인터페이스에 대한 포인터에 대해 알 수 없는 외부를 쿼리할 수 있습니다. 그런 다음 IKsObject::KsGetObjectHandle 을 호출하여 파일 핸들을 가져옵니다. 이제 이 파일 핸들을 사용하여 KsSynchronousIoControlDevice 를 호출하여 디바이스 속성을 조작합니다.