Получение объекта DDI HDAUDIO_BUS_INTERFACE_BDL
Как упоминалось ранее, драйвер функции для кодека аудио или модема получает подсчитываемую ссылку на объект с HD Audio DDI, отправляя IRP_MN_QUERY_INTERFACE IOCTL в драйвер шины HD Audio.
В следующей таблице показаны значения входных параметров, которые драйвер функции записывает в IOCTL, чтобы получить структуру HDAUDIO_BUS_INTERFACE_BDL и объект контекста для версии HD Audio DDI, определяемой этой структурой.
Параметр | Значение |
---|---|
GUID CONST *InterfaceType |
GUID_HDAUDIO_BUS_INTERFACE_BDL |
Размер USHORT |
sizeof(HDAUDIO_BUS_INTERFACE_BDL) |
Версия USHORT |
0x0100 |
Интерфейс PINTERFACE |
Указатель на структуру HDAUDIO_BUS_INTERFACE_BDL |
PvOID InterfaceSpecificData |
NULL |
Драйвер функции выделяет хранилище для структуры HDAUDIO_BUS_INTERFACE_BDL и включает указатель на эту структуру в IOCTL. В предыдущей таблице указатель на структуру HDAUDIO_BUS_INTERFACE_BDL приводится к типу PINTERFACE, который является указателем на структуру типа INTERFACE. Имена и типы первых пяти элементов HDAUDIO_BUS_INTERFACE_BDL совпадают с именами и типами пяти элементов INTERFACE. HDAUDIO_BUS_INTERFACE_BDL содержит дополнительные члены, которые являются указателями функций на подпрограммы DDI. В ответ на получение IOCTL от драйвера функции драйвер шины HD Audio заполняет всю структуру HDAUDIO_BUS_INTERFACE_BDL .
В следующей таблице показаны значения, которые драйвер шины HD Audio записывает в первые пять элементов структуры HDAUDIO_BUS_INTERFACE_BDL .
Член | Значение |
---|---|
Размер USHORT |
sizeof(HDAUDIO_BUS_INTERFACE_BDL) |
Версия USHORT |
0x0100 |
Контекст PVOID |
Сведения о контексте, которые необходимо передать в качестве первого параметра вызова каждой подпрограмме DDI |
PINTERFACE_REFERENCE InterfaceReference |
Указатель на подпрограмму, которая увеличивает число ссылок объекта контекста |
PINTERFACE_DEREFERENCE InterfaceDereference |
Указатель на подпрограмму, которая уменьшает количество ссылок объекта контекста |
В предыдущей таблице элемент Context указывает на объект контекста, содержащий сведения, относящиеся к конкретному экземпляру HDAUDIO_BUS_INTERFACE_BDL версии DDI, которую клиент получает из IOCTL. Как упоминалось ранее, при вызове любой подпрограммы в DDI драйвер функции клиента должен всегда указывать значение указателя контекста в качестве первого параметра вызова.