Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Func.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.58 Mб
Скачать

IKsPropertySet::QuerySupport

HRESULT QuerySupport( REFGUID PropertySetId, ULONG PropertyId, PULONG pSupport );

Возвращаемое значение

Если данный набор свойств не поддерживается, возвращает значение E_NOTIMPL. Любое другое значение соответствует набору свойств разработчика.

Аргументы

  1. PropertySetId — идентификатор набора свойств.

  2. PropertyId — идентификатор свойства в наборе.

  3. pSupport — указатель на переменную типа ULONG, в которую будут записаны флаги, указывающие на поддержку данного свойства, предоставляемую драйвером. Данный аргумент может содержать следующие флаги:

  • KSPROPERTY_SUPPORT_GET — данное свойство может быть считано с использованием метода IKsPropertySet::Get

  • KSPROPERTY_SUPPORT_SET — данное свойство может быть установлено с использованием метода IKsPropertySet::Set

Примечание

Метод IKsPropertySet::QuerySupport позволяет определить, поддерживается ли данный набор свойств текущим объектом.

Вопрос о том, какие из свойств некоторого набора поддерживаются данным аппаратным обеспечением, зависит исключительно от его разработчика. Вся необходимая информация содержится в описании, предоставляемом разработчиком для данного набора свойств.

IKsPropertySet::Set

HRESULT Set( REFGUID PropertySetId, ULONG PropertyId, PVOID pPropertyParams, ULONG cbPropertyParams, PVOID pPropertyData, ULONG cbPropertyData );

Возвращаемое значение

Определяется разработчиком набора свойств.

Аргументы

  1. PropertySetId — идентификатор набора свойств.

  2. PropertyId — идентификатор свойства в наборе.

  3. pPropertyParams — указатель на набор параметров свойства.

  4. cbPropertyParams — размер в байтах объекта структуры, на который указывает аргумент pPropertyParams.

  5. pPropertyData — указатель на буфер, содержащий значения устанавливаемых свойств.

  6. cbPropertyData — размер в байтах объекта структуры, на который указывает аргумент pPropertyData.

Примечание

Метод IKsPropertySet::Set позволяет установить новые значения свойств, содержащиеся в объекте структуры, на который указывает аргумент pPropertyData.

IUnknown

Интерфейс IUnknown позволяет контейнерам получить указатели на другие интерфейсы данного объекта с использованием метода QueryInterface, а также производить подключение и отключение объекта к приложению с использованием методов IUnknown::AddRef и IUnknown::Release. Класс интерфейса IUnknown является базовым для классов всех остальных интерфейсов COM.

Реализация

Интерфейс IUnknown реализуется как составная часть других интерфейсов. При использовании множественного наследования C++ для реализации нескольких интерфейсов, различные интерфейсы могут разделять одну и ту же реализацию интерфейса IUnknown. Если для множественного наследования используются вложенные классы, то каждой реализации любого вложенного класса должна соответствовать своя реализация интерфейса IUnknown.

Использование

Методы интерфейса IUnknown используются для переключения между различными интерфейсами объекта, а также для добавления ссылок и освобождения объекта.

Описание данного интерфейса содержится в файле заголовка unknown.h.

IUnknown::AddRef

ULONG AddRef(void);

Возвращаемое значение

Возвращает целое число от 1 до n, представляющее собой новое значение счётчика ссылок. Это значение может использоваться только для целей диагностики или отладки, поскольку в некоторых случаях оно является нестабильным.

Примечание

Метод IUnknown::AddRef увеличивает счётчик ссылок интерфейса объекта. Этот метод вызывается для каждой новой копии указателя, на интерфейс данного объекта.

Объекты используют механизм подсчёта ссылок для обеспечения того, чтобы объект не был уничтожен до того, как не будет освобождена последняя ссылка на него в другом объекте или приложении. Использование метода IUnknown::AddRef позволяет создать зарегистрированную копию указателя на интерфейс. Этот метод должен вызываться и в том случае, когда копия указателя продолжает использоваться после уничтожения исходного указателя. Освобождение указателя перед его уничтожением производится функцией IUnknow: Release.

Поскольку объекты должны обеспечивать возможность создания 232 - 1 внешних ссылок на указатели, внутренний счётчик ссылок, к которому обращается метод IUnknown::AddRef имеет формат целого числа без знака.

Использование

Данная функция вызывается при создании каждой новой копии указателя на интерфейс. Например, при передаче копии указателя в качестве возвращаемого значения функции для него нужно вызвать метод IUnknown::AddRef. Метод IUnknown::AddRef следует вызывать при передаче указателя в качестве аргумента функции. В свою очередь сама функция должна вызвать метод IUnknown::Release перед копированием выходной величины по указанному адресу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]