Поделиться через


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

Вы можете написать подключаемый модуль обработчика интерфейса для предоставления программного доступа в пользовательском режиме к набору свойств для конкретного драйвера, предоставляемому мини-драйвером 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;
};

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

В частности, метод 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 с помощью этого дескриптора файла.