다음을 통해 공유


HDAUDIO_BUS_INTERFACE DDI 개체 가져오기

다음 표에서는 함수 드라이버가 IRP_MN_QUERY_INTERFACE IOCTL에 기록하여 구조체가 정의하는 HD Audio DDI 버전에 대한 HDAUDIO_BUS_INTERFACE 구조 및 컨텍스트 개체를 가져오는 입력 매개 변수 값을 보여 줍니다.

매개 변수

CONST GUID *InterfaceType

GUID_HDAUDIO_BUS_INTERFACE

USHORT 크기

sizeof(HDAUDIO_BUS_INTERFACE)

USHORT 버전

0x0100

PINTERFACE 인터페이스

HDAUDIO_BUS_INTERFACE 구조체에 대한 포인터

PVOID 인터페이스SpecificData

NULL

함수 드라이버는 HDAUDIO_BUS_INTERFACE 구조체에 대한 스토리지를 할당하고 IOCTL에서 이 구조체에 대한 포인터를 포함합니다. 앞의 표에서 HDAUDIO_BUS_INTERFACE 구조체에 대한 포인터는 INTERFACE 형식의 구조체에 대한 포인터인 PINTERFACE 형식으로 캐스팅됩니다. HDAUDIO_BUS_INTERFACE 처음 5개 멤버의 이름과 형식은 INTERFACE의 5개 멤버와 일치합니다. HDAUDIO_BUS_INTERFACE DDI 루틴에 대한 함수 포인터인 추가 멤버를 포함합니다. 함수 드라이버에서 IOCTL을 수신하는 것에 대한 응답으로 HD 오디오 버스 드라이버는 전체 HDAUDIO_BUS_INTERFACE 구조를 채웁니다.

다음 표에서는 HD Audio Bus 드라이버가 HDAUDIO_BUS_INTERFACE 구조체의 처음 5개 멤버에 쓰는 값을 보여 줍니다.

멤버

USHORT 크기

sizeof(HDAUDIO_BUS_INTERFACE)

USHORT 버전

0x0100

PVOID 컨텍스트

모든 DDI 루틴에 첫 번째 호출 매개 변수로 전달되어야 하는 컨텍스트 정보

PINTERFACE_REFERENCE InterfaceReference

컨텍스트 개체의 참조 수를 증가시키는 루틴에 대한 포인터

PINTERFACE_DEREFERENCE InterfaceDereference

컨텍스트 개체의 참조 수를 감소시키는 루틴에 대한 포인터

앞의 표에서 Context 멤버는 클라이언트가 IOCTL에서 가져오는 기준 HD 오디오 DDI의 특정 instance 관련된 정보를 포함하는 컨텍스트 개체를 가리킵니다. DDI에서 루틴을 호출할 때 클라이언트 함수 드라이버는 항상 컨텍스트 포인터 값을 첫 번째 호출 매개 변수로 지정해야 합니다. 컨텍스트 정보는 클라이언트에 불투명합니다. HD 오디오 버스 드라이버는 각 클라이언트에 대해 다른 컨텍스트 개체를 만듭니다. 컨텍스트 개체가 더 이상 필요하지 않은 경우 클라이언트는 앞의 표에 표시된 InterfaceDereference 루틴을 호출하여 컨텍스트 개체를 해제합니다. 필요한 경우 클라이언트는 InterfaceReference 루틴을 호출하여 개체에 대한 추가 참조를 만들 수 있지만 클라이언트는 더 이상 필요하지 않은 경우 이러한 참조를 해제할 책임이 있습니다.