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

IDirectPlayVoiceClient::Create3DSoundBuffer 메서드


player 또는 그룹용의 3D 사운드 버퍼를 얻어온다. 3D 사운드 버퍼 개체의 메서드를 사용하면 지정한 그룹 또는 player로부터 수신한 음성 전송의 가상 3D 위치를 변경할 수 있다.

구문

HRESULT Create3DSoundBuffer(      

    DVID dvID,     LPDIRECTSOUNDBUFFER lpdsSourceBuffer,     DWORD dwPriority,     DWORD dwFlags,     LPDIRECTSOUND3DBUFFER *lpUserBuffer );

파라미터

dvID
[in] 사용자가 버퍼를 보존하는 대상이 되는 player 또는 그룹의 식별 정보를 지정하는 DVID 형의 변수. 또, DVID_REMAINING 를 지정 하면, 사용자 버퍼가 없는 모든 player 또는 그룹에 대해서 3D 사용자 버퍼를 생성 할 수 있다. DVID_REMAINING 를 지정하는 경우, lpdsSourceBuffer 파라미터에 NULL 를 지정해,dwPriority 파라미터와 dwFlags 파라미터를 0 으로 설정할 필요가 있다.
lpdsSourceBuffer
[in] Microsoft® DirectPlay® Voice 의 메인 버퍼의 생성에 사용하는,IDirectSoundBuffer 인터페이스의 포인터. NULL, 또는 사용자 생성의 Microsoft DirectSound® 버퍼를 지정할 수 있다. 이 멤버가 NULL 의 경우, DirectPlay Voice 가 버퍼를 생성 한다.
dwPriority
[in] 다이레크트파스스르. IDirectSoundBuffer::Play 가 불려 갈 때, 이 값은 dwPriority 파라미터에게 건네진다. 더 자세한 정보는, 「IDirectSoundBuffer8::Play」를 참조할것. lpdsSourceBuffer 가 NULL 의 경우, 이 파라미터는 0 이 아니면 안된다.
dwFlags
[in] 다이레크트파스스르. IDirectSoundBuffer::Play 가 불려 갈 때, 이 값은 dwFlags 파라미터에게 건네진다. 더 자세한 정보는, 「IDirectSoundBuffer8::Play」를 참조할것. lpdsSourceBuffer 가 NULL 의 경우, 이 파라미터는 0 이 아니면 안된다.
lpUserBuffer
[out] 예약된 버퍼가 놓여지는 메모리의 포인터.

반환값

성공했을 경우는 DV_OK 를 돌려준다. 또는, 다음의 몇개의 에러값을 돌려준다.

DVERR_ALREADYBUFFERED지정된 ID 에는 이미 사용자 버퍼가 있다.
DVERR_INVALIDOBJECTDirectPlay 개체의 포인터는 무효이다.
DVERR_INVALIDPARAM메서드에 건네진 1 개 이상의 파라미터가 무효이다.
DVERR_INVALIDPOINTER지정된 포인터가 무효이다.
DVERR_NOTALLOWED개체에는, 이 처리를 실행하는 권한이 없다.
DVERR_NOTCONNECTEDDirectPlay Voice 개체가 접속되지 않다.
DVERR_NOTINITIALIZED이 메서드를 호출하기 전에,IDirectPlayVoiceClient::Initialize 메서드 또는 IDirectPlayVoiceServer::Initialize 메서드를 호출할 필요가 있다.
DVERR_OUTOFMEMORY요구된 처리를 실행하려면 , 메모리가 부족하다.
DVERR_SESSIONLOST트랜스포트는 세션에의 접속을 상실했다.


주의

DirectPlay 의 음성 세션이 믹싱 서버 세션의 경우, 이 메서드는 실패해, DVERR_NOTALLOWED 를 돌려준다.

3D 사운드 버퍼 개체의 모든 멤버 함수에 액세스 할 수 있지만, DirectPlay Voice 클라이언트가 버퍼를 사용해 수신 오디오의 스트리밍을 실시하기 (위해)때문에, DirectSound3Dbuffer 개체의 Lock,UnLock, 또는 Play 의 각 메서드는 사용하지 않는 것.

여기서 버퍼를 지정했을 경우, DirectPlay 는 그 버퍼를 player 또는 그룹의 버퍼로서 사용한다. 사용자 생성의 버퍼에는 다음의 제한이 있다.

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

DirectPlay 에 버퍼를 건네줄 때는, 버퍼가 잠금 되고 있어서는 안 된다. 각각의 사용자가 불필요하게 되는지, player가 음성 세션을 떨어지는 경우,IDirectPlayVoiceClient::Delete3DSoundBuffer 를 호출해, 리소스를 릴리즈 할 필요가 있다.

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



© 2002 Microsoft Corporation. All rights reserved.
↑TOP