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


структура PCPROPERTY_ITEM (portcls.h)

Структура PCPROPERTY_ITEM описывает свойство, поддерживаемое определенным фильтром, закреплением или узлом.

Синтаксис

typedef struct {
  const GUID            *Set;
  ULONG                 Id;
  ULONG                 Flags;
  PCPFNPROPERTY_HANDLER Handler;
} PCPROPERTY_ITEM, *PPCPROPERTY_ITEM;

Члены

Set

Задает набор свойств. Этот элемент является указателем на GUID, который однозначно идентифицирует набор свойств. Список идентификаторов GUID набора свойств см. в наборах свойств звуковых драйверов.

Id

Указывает идентификатор свойства. Этот элемент определяет элемент свойства в наборе свойств. Если набор свойств содержит N-элементы, допустимые идентификаторы свойств являются целыми числами в диапазоне от 0 до N-1.

Flags

Указывает типы запросов свойств, поддерживаемых драйвером. Задайте для этого элемента побитовое значение OR некоторых или всех битов флагов, которые отображаются в следующей таблице.

Пометка битов Тип запроса свойства
PCPROPERTY_ITEM_FLAG_GET Запрос на получение текущего параметра данных свойств.
PCPROPERTY_ITEM_FLAG_SET Запрос на задание текущего параметра данных свойств.
PCPROPERTY_ITEM_FLAG_DEFAULTVALUES Запрос значений по умолчанию драйвера для данных свойств.
PCPROPERTY_ITEM_FLAG_BASICSUPPORT Запрос на базовую поддержку, указывающий, какие типы запросов обрабатывают драйвер для этого свойства, а также указывает допустимый тип данных и допустимые диапазоны для данных свойства.
PCPROPERTY_ITEM_FLAG_SERIALIZESIZE Запрос размера данных свойства для этого свойства при сериализации в рамках запроса KSPROPERTY_TYPE_SERIALIZESET.
PCPROPERTY_ITEM_FLAG_SERIALIZERAW Запрос на сериализацию этого свойства в зависимости от драйвера. Эта операция является обратной PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW.
PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW Запрос на отмену инициализации этого свойства в зависимости от драйвера. Эта операция является обратной PCPROPERTY_ITEM_FLAG_SERIALIZERAW.
PCPROPERTY_ITEM_FLAG_SERIALIZE PCPROPERTY_ITEM_FLAG_SERIALIZERAW | PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW | PCPROPERTY_ITEM_FLAG_SERIALIZESIZE

Handler

Указатель на подпрограмму обработчика свойств. Этот элемент является указателем функции типа PCPFNPROPERTY_HANDLER, который определяется следующим образом:

  typedef NTSTATUS (*PCPFNPROPERTY_HANDLER)
  (
      IN PPCPROPERTY_REQUEST  PropertyRequest
  );

См. следующий раздел "Примечания".

Замечания

Структура PCPROPERTY_ITEM указывает определенный элемент свойства в таблице автоматизации. Структура PCAUTOMATION_TABLE указывает на массив PCPROPERTY_ITEM структур.

При вызове подпрограммы обработчика обработчик вызывающий объект передается в один параметр вызова, который является указателем на структуру PCPROPERTY_REQUEST. Эта структура выделяется вызывающим объектом, и вызывающий освобождает его в любом из следующих условий:

  1. Если подпрограмма обработчика возвращает любой код состояния, отличный от STATUS_PENDING, вызывающий объект освобождает структуру. В этом случае драйвер минипорта не должен пытаться получить доступ к структуре после возврата подпрограммы обработчика .
  2. Подпрограмма обработчика также может возвращать STATUS_PENDING, в этом случае драйвер минипорта обязан вызывать PcCompletePendingPropertyRequest позже, чтобы завершить ожидающий запрос свойства. Функция PcCompletePendingPropertyRequest освобождает структуру. После вызова PcCompletePendingPropertyRequestдрайвер мини-порта не должен пытаться получить доступ к структуре.
Если минипорт-драйвер пытается получить доступ к структуре после освобождения, это действие, скорее всего, приведет к проверке ошибок или повреждению памяти другого драйвера.

Дополнительные сведения о сериализации и необработанной сериализации набора свойств см. в разделе свойства KS.

Требования

Требование Ценность
заголовка portcls.h (include Portcls.h)

См. также

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest