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


Получение объекта DDI HDAUDIO_BUS_INTERFACE

В следующей таблице показаны значения входных параметров, которые драйвер функции записывает в IRP_MN_QUERY_INTERFACE IOCTL, чтобы получить структуру HDAUDIO_BUS_INTERFACE и объект контекста для версии HD Audio DDI, определяемой этой структурой.

Параметр Значение

GUID CONST *InterfaceType

GUID_HDAUDIO_BUS_INTERFACE

Размер USHORT

sizeof(HDAUDIO_BUS_INTERFACE)

Версия USHORT

0x0100

Интерфейс PINTERFACE

Указатель на структуру HDAUDIO_BUS_INTERFACE

PvOID InterfaceSpecificData

NULL

Драйвер функции выделяет хранилище для структуры HDAUDIO_BUS_INTERFACE и включает указатель на эту структуру в IOCTL. В предыдущей таблице указатель на структуру HDAUDIO_BUS_INTERFACE приводится к типу PINTERFACE, который является указателем на структуру типа INTERFACE. Имена и типы первых пяти элементов HDAUDIO_BUS_INTERFACE совпадают с именами и типами пяти элементов INTERFACE. HDAUDIO_BUS_INTERFACE содержит дополнительные члены, которые являются указателями функций на подпрограммы DDI. В ответ на получение IOCTL от драйвера функции драйвер шины HD Audio заполняет всю структуру HDAUDIO_BUS_INTERFACE .

В следующей таблице показаны значения, которые драйвер шины HD Audio записывает в первые пять элементов структуры HDAUDIO_BUS_INTERFACE .

Член Значение

Размер USHORT

sizeof(HDAUDIO_BUS_INTERFACE)

Версия USHORT

0x0100

Контекст PVOID

Сведения о контексте, которые должны передаваться в качестве первого параметра вызова каждой подпрограмме DDI

PINTERFACE_REFERENCE InterfaceReference

Указатель на подпрограмму, которая увеличивает число ссылок объекта контекста

PINTERFACE_DEREFERENCE InterfaceDereference

Указатель на подпрограмму, которая уменьшает количество ссылок объекта контекста

В предыдущей таблице элемент Context указывает на объект контекста, содержащий сведения, относящиеся к конкретному экземпляру базового hd Audio DDI, полученного клиентом из IOCTL. При вызове любой подпрограммы в DDI драйвер функции клиента должен всегда указывать значение указателя контекста в качестве первого параметра вызова. Сведения о контексте непрозрачны для клиента. Драйвер шины HD Audio создает отдельный объект контекста для каждого клиента. Если объект контекста больше не требуется, клиент освобождает объект контекста, вызывая подпрограмму InterfaceDereference , показанную в предыдущей таблице. При необходимости клиент может создать дополнительные ссылки на объект, вызвав подпрограмму InterfaceReference , но клиент отвечает за освобождение этих ссылок, когда они больше не требуются.