структура 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 . Эта структура выделяется вызывающим объектом, и вызывающий объект освобождает ее при любом из следующих условий:
- Если подпрограмма обработчика возвращает любой код состояния, отличный от STATUS_PENDING, вызывающий объект освобождает структуру. В этом случае драйвер мини-порта не должен пытаться получить доступ к структуре после возврата подпрограммы Handler .
- Подпрограмма handler также может возвращать STATUS_PENDING. В этом случае драйвер мини-порта обязан позднее вызвать PcCompletePendingPropertyRequest для выполнения ожидающего запроса свойства. Функция PcCompletePendingPropertyRequest освобождает структуру. После вызова PcCompletePendingPropertyRequest драйвер мини-порта не должен пытаться получить доступ к структуре.
Дополнительные сведения о сериализации и необработанной сериализации набора свойств см. в разделе Свойства KS.
Требования
Требование | Значение |
---|---|
Заголовок | portcls.h (включая Portcls.h) |