Подключаемый модуль обработчика интерфейса

Можно написать подключаемый модуль обработчика интерфейса для обеспечения программного пользовательского режима доступа к набору свойств, специфичному для драйвера, которые предоставляются minidriver KS. Сначала зарегистрируйте объект, как описано в Registering KS Proxy Plug-ins.

Класс подключаемого модуля интерфейса может быть производным от CUnknown:

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

Подключаемый модуль интерфейса — это COM-интерфейс, предоставляемый поставщиком, который объединяется функционально с прокси-сервером KS, предоставленным MS, на этапе создания.

В частности, метод CreateInstance подключаемого модуля получает указатель на прокси-сервер "KS", как на внешнего неизвестного.

Затем можно выполнить запрос у этого внешнего объекта, чтобы получить указатель на предоставленный MS интерфейс IKsPropertySet.

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

Затем из CreateInstance вызовите конструктор интерфейса, чтобы создать экземпляр объекта обработчика интерфейса.

Укажите указатель на IKsPropertySet в качестве параметра в вызове конструктора. Затем конструктор сохраняет указатель на iKsPropertySet в качестве элемента m_piKsPropertySet в предыдущем объявлении.

Теперь вы можете реализовать методы Get и Set в классе, которые вызывают IKsPropertySet::Get и IKsPropertySet::Set соответственно для управления свойствами, предоставляемыми драйвером.

Кроме того, можно запросить внешний объект неизвестного типа для получения указателя на его интерфейс IKsObject. Затем вызовите IKsObject::KsGetObjectHandle , чтобы получить дескриптор файла. Теперь вы управляете свойствами устройства путем вызова KsSynchronousIoControlDevice с помощью этого дескриптора файла.