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


структура 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

Указывает типы запросов свойств, поддерживаемых драйвером. Присвойте этому элементу побитовое ЗНАЧЕНИЕ ИЛИ некоторых или всех битов флагов, которые отображаются в следующей таблице.

Биты флага Тип запроса свойства
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, вызывающий объект освобождает структуру. В этом случае драйвер мини-порта не должен пытаться получить доступ к структуре после возврата подпрограммы Handler .
  2. Подпрограмма handler также может возвращать STATUS_PENDING. В этом случае драйвер мини-порта обязан позднее вызвать PcCompletePendingPropertyRequest для выполнения ожидающего запроса свойства. Функция PcCompletePendingPropertyRequest освобождает структуру. После вызова PcCompletePendingPropertyRequest драйвер мини-порта не должен пытаться получить доступ к структуре.
Если драйвер мини-порта пытается получить доступ к структуре после освобождения, это действие, скорее всего, вызовет ошибку проверка или повреждает память другого драйвера.

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

Требования

Требование Значение
Заголовок portcls.h (включая Portcls.h)

См. также раздел

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest