DirectSound DirectSound 의 고도의 주제 DirectSound 버퍼의 프로퍼티 세트   [목차열람] [주소복사] [슬롯비우기]
DirectSound 버퍼의 프로퍼티 세트
 
Microsoft DirectX 9.0

DirectSound 버퍼의 프로퍼티 세트

사운드 카드 위에의 확장 프로퍼티를 이용하려면 , 최초로 그 드라이버가 IKsPropertySet 인터페이스를 지원 하고 있을지 어떨지를 확인해, 지원 하고 있는 경우는 그 인터페이스의 포인터를 취득해야 한다. 이것을 실시하려면 , 다음과 같이, DirectSound 3D 버퍼 개체 위에의 기존의 인터페이스에 대해서 QueryInterface 메서드를 호출한다.

HRESULT hr = lpDirectSound3DBuffer->QueryInterface(
    IID_IKsPropertySet,
    (void**) &lpKsPropertySet));

이 예에서는,lpDirectSound3DBuffer 는 버퍼의 인터페이스의 포인터이며,IKsPropertySet 인터페이스가 발견되었을 경우는,lpKsPropertySet 가 그 주소를 받는다. IID_IKsPropertySet 는, Dsound.h 로 정의되고 있는 GUID 이다. 버퍼가 하드웨어 액셀러레이트 되고 있어, 기본으로 되어 있는 드라이버가 프로퍼티 세트를 지원 하고 있는 경우에 한정해, 인터페이스를 이용할 수 있다.

주  Dsound.h 에서의 이 인터페이스의 선언은, Ksproxy.h 및 Strmif.h 에서의 선언과는 다르다. 프로젝트에 Ksproxy.h 와 Strmif.h 가 포함되어 있어, DirectSound 의 처리을 사용하고 싶은 경우는, 우선 Dsound.h 를 인클루드 하는 것. 그렇게 하지 않으면IKsPropertySet 의 메서드가 불려 갔을 때에, 애플리케이션으로부터의 응답이 정지한다.

IKsPropertySet::QuerySupport 메서드를 사용하면, 특정의 프로퍼티를 검색할 수 있다. PropertySetId 파라미터의 값은, 하드웨어 벤더에 의해 정의된 GUID 이다.

특정의 프로퍼티에 대한 지원이 존재 하면 확인한 후는,IKsPropertySet::Set 메서드를 사용해 프로퍼티 상태를 변경해,IKsPropertySet::Get 메서드를 사용해 현재 상태를 확인할 수가 있다. 프로퍼티 상태의 설정과 취득은,pPropertyData 파라미터를 사용해 실시한다.

IKsPropertySet::SetpPropertyParams 파라미터의 개체에, 추가의 프로퍼티 파라미터를 건네주어도 괜찮다. 이 파라미터의 정확한 사용 방법은, 프로퍼티 세트에 관한 하드웨어 벤더의 시방서로 정의되지만, 프로퍼티 세트의 인스턴스를 정의하기 위해서 사용되는 것이 보통이다. 실제로는,pPropertyParams 파라미터를 사용하는 것은 거의 없다.

↑TOP