DirectPlay DirectPlay C/C++ 레퍼런스 인터페이스 IDirectPlayVoiceClient Connect   [목차열람] [주소복사] [슬롯비우기]
IDirectPlayVoiceClient::Connect 메서드
 
Microsoft DirectX 9.0

IDirectPlayVoiceClient::Connect 메서드


클라이언트를 Microsoft® DirectPlay® Voice 세션에 접속한다.

구문

HRESULT Connect(      

    PDVSOUNDDEVICECONFIG pSoundDeviceConfig,     PDVCLIENTCONFIG pdvClientConfig,     DWORD dwFlags );

파라미터

pSoundDeviceConfig
[in] 사운드 장치 구성을 기술하는 DVSOUNDDEVICECONFIG 구조체의 포인터.
pdvClientConfig
[in] 클라이언트의 일반적 구성을 기술하는 DVCLIENTCONFIG 구조체의 포인터.
dwFlags
[in] 플래그. 다음의 플래그를 지정할 수 있다.
DVFLAGS_SYNC
처리가 완료할 때까지 메서드는 돌아오지 않는다.

반환값

메서드가 동기를 잡으면서 처리되어 처리가 성공했을 경우는, DV_OK 를 돌려준다. 디폴트에서는, 이 메서드는 비동기에게 실행되어DV_PENDING 를 돌려준다. 에러의 경우는, 다음의 몇개의 값을 돌려준다.

DVERR_ALREADYPENDING이 타입의 비동기 호출은 이미 보류 상태가 되어 있다.
DVERR_COMPRESSIONNOTSUPPORTED지정된 압축 타입이 로컬 컴퓨터로 지원하지 않는다.
DVERR_INCOMPATIBLEVERSION클라이언트는, 호스트와 호환성이 없는 음성 세션에 접속했다.
DVERR_INVALIDDEVICE지정된 장치가 무효이다.
DVERR_INVALIDFLAGS이 메서드에 건네진 플래그는 무효이다.
DVERR_INVALIDOBJECTDirectPlay 개체의 포인터는 무효이다.
DVERR_INVALIDPARAM메서드에 건네진 1 개 이상의 파라미터가 무효이다.
DVERR_INVALIDPOINTER지정된 포인터가 무효이다.
DVERR_NOTINITIALIZED이 메서드를 호출하기 전에,IDirectPlayVoiceClient::Initialize 메서드 또는 IDirectPlayVoiceServer::Initialize 메서드를 호출할 필요가 있다.
DVERR_OUTOFMEMORY요구된 처리를 실행하려면 , 메모리가 부족하다.
DVERR_RUNSETUP지정된 오디오 구성은 테스트되지 않다. IDirectPlayVoiceTest::CheckAudioSetup 메서드를 호출할 필요가 있다.
DVERR_SENDERROR데이터의 송신중에 에러가 발생했다.
DVERR_SOUNDINITFAILURE사운드 카드의 초기화에 실패했다.
DVERR_TIMEOUT지정된 시간내에 처리를 실행할 수 없었다.
DVERR_TRANSPORTNOPLAYER지정된 트랜스포트는 접속되어 호스트가 되고 있지만, 로컬 player가 존재하지 않는다.
DVERR_TRANSPORTNOSESSION지정된 트랜스포트는 유효하지만, 접속되지 않은가 호스트가 되지 않았다.
DVERR_CONNECTEDDirectPlay Voice 개체가 접속되고 있다.
DVERR_NOVOICESESSION지정된 세션은 음성 세션은 아니다.


주의

이 메서드를 비동기에게 호출해, 메서드가 DVERR_PENDING 를 돌려주는 경우, 접속 시행의 결과가 포함된 DVMSGID_CONNECTRESULT 메시지를 수신한다. 이 메시지는, 메서드가 DVERR_PENDING 를 돌려주기 전 또는 후에 도착한다. 비동기에게 이 메서드를 호출하는 경우,DVMSGID_CONNECTRESULT 메시지는 수신하지 않는다.

DirectPlay Voice 세션에 클라이언트를 접속하기 전에 셋업 위저드를 호출해, 재생과 캡춰용으로 선택한 사운드 장치를 테스트할 필요가 있다. 애플리케이션의 기동시에는,IDirectPlayVoiceTest::CheckAudioSetup 를 사용해 오디오 구성을 확인한다. 이 메서드가 DVERR_RUNSETUP 를 돌려주는 경우, 지정된 사운드 구성은 테스트되지 않다. 셋업 위저드는 구성 마다 1 회만 실행할 필요가 있다.

버퍼의 형식이 올바르지 않은 경우, 메서드는 DVERR_INVALIDBUFFER 를 돌려준다.

DirectPlay Voice 가 버퍼에 기입하려고 했을 때에 버퍼 또는 버퍼의 일부가 잠금 되고 있는 경우, 메서드는 DVERR_INVALIDBUFFER 를 돌려주어, DirectPlay Voice 는 세션으로부터 접속 해제된다. 또,DVMSGID_SESSIONLOST 메시지를 받아들인다. 관련지을 수 있는 구조체의 hResult 멤버는 DVERR_LOCKEDBUFFER 로 설정된다. 이 후의 메서드의 호출은,DVERR_NOTCONNECTED 에러 코드를 돌려준다.

전이중 처리가 지원되지 않은 경우, DirectPlay Voice 는 반이중 (청취 전용) 모드에 돌아온다. 반이중 모드인지 아닌지를 조사하려면 , 접속을 완료한 다음에,IDirectPlayVoiceClient::GetSoundDeviceConfig 를 호출한다. 반이중 모드의 경우,DVSOUNDDEVICECONFIG 구조체의 dwFlags 멤버에 DVSOUNDCONFIG_HALFDUPLEX 플래그가 설정되어 있다.

인터페이스의 취득 방법과는 관계없이, DirectPlayVoiceClient 개체에서는,IDirectPlayVoiceClient::Disconnect 가 불려 갈 때까지,AddRef 에 의해, 사용하는 IDirectSound 인터페이스와 IDirectSoundCapture 인터페이스에의 참조가 유지된다. IDirectPlayVoiceClient::Disconnect 가 불려 가면 DirectPlayVoiceClient 개체는 양인터페이스에 대해서 Release 를 호출한다.

접속이 보류 상태가 되어 있는 동안에 IDirectPlayVoiceClient::Connect 를 호출하면, DVERR_ALREADYPENDING 가 반환된다. 또, 1 번에 1 개의 접속만을 보류 상태로 할 수 있다.

이 메서드를 호출하기 전에, 지정된 DirectPlay 개체에 대해서 트랜스포트 세션을 시작 하고 있을 필요가 있다. IDirectPlayVoiceClient::Initialize 의 호출이 성공한 후에 Connect 메서드를 호출할 필요가 있다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP