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