DirectShow 보유 사용이 금지되고 있는 인터페이스 IDirectDraw3 CreateSurface   [목차열람] [주소복사] [슬롯비우기]
IDirectDraw3::CreateSurface
 
Microsoft DirectX 9.0

IDirectDraw3::CreateSurface

 :  IDirectDraw3 인터페이스의 사용은 피하는 것.

DirectDraw 개체로부터 DirectDrawSurface 개체를 생성 한다.

구문

STDMETHOD CreateSurface(
    LPDDSURFACEDESC lpDDSurfaceDesc,
    LPDIRECTDRAWSURFACE FAR *lplpDDSurface,
    IUnknown FAR *pUnkOuter
);

파라미터

lpDDSurfaceDesc

[in] 요구하는 표면을 기술하는 DDSURFACEDESC 구조체의 포인터. 이 메서드를 호출하기 전에, 사용하지 않는 DDSURFACEDESC 멤버 모든 것을 0 으로 설정해야 한다. DDSCAPS 구조체는 DDSURFACEDESC 의 멤버이다.

lplpDDSurface

[out] 유효한 DirectDrawSurface 포인터로 초기화하는 포인터의 주소 (호출이 성공했을 경우).

pUnkOuter

[in] 안쪽의 개체의 IUnknown 인터페이스와 집성 되는 외부의 개체의 IUnknown 인터페이스의 포인터.

반환값

성공했을 경우는, DD_OK 를 돌려준다. 그 이외의 경우는, 다음의 몇개의 에러값을 돌려준다.

설명
DDERR_INCOMPATIBLEPRIMARY 1차 표면의 생성 요구가 기존의 1차 표면와 일치하고 있지 않다.
DDERR_INVALIDCAPS 콜백 함수에 건네진 1 개 이상의 능력 비트가 부정하다.
DDERR_INVALIDOBJECT DirectDraw 가 무효인 DirectDraw 개체의 포인터를 받았다.
DDERR_INVALIDPARAMS 메서드에 건네진 1 개 이상의 인수가 부정하다.
DDERR_INVALIDPIXELFORMAT 지정된 픽셀 포맷이 무효이다.
DDERR_NOALPHAHW 알파 가속화 하드웨어가 존재하지 않는지, 이용할 수 없기 때문에, 요구된 처리가 실패했다.
DDERR_NOCOOPERATIVELEVELSET 표면의 생성전에 IDirectDraw2::SetCooperativeLevel 메서드가 불려 가지 않았다.
DDERR_NODIRECTDRAWHW 하드웨어 전용 DirectDraw 개체를 생성 할 수 없다. 드라이버는 하드웨어를 지원 하지 않는다.
DDERR_NOEMULATION 소프트웨어 에뮬레이션을 이용할 수 없다.
DDERR_NOEXCLUSIVEMODE 애플리케이션에 대해서 배타 모드가 요구되었지만, 애플리케이션에 배타 모드가 없다.
DDERR_NOFLIPHW 표시되는 표면을 플립핑 할 수 없다.
DDERR_NOMIPMAPHW 밉맵 텍스처를 맵핑 하는 하드웨어가 존재하지 않는지, 이용할 수 없기 때문에, 처리를 실행할 수 없다.
DDERR_NOOVERLAYHW 오버레이 하드웨어가 존재하지 않는지, 이용할 수 없기 때문에, 처리를 실행할 수 없다.
DDERR_NOZBUFFERHW z 버퍼에 대한 하드웨어 지원이 없기 때문에, 디스플레이 메모리에서의 z 버퍼의 생성, 또는 z 버퍼를 사용한 블리트를 실행할 수 없다.
DDERR_OUTOFMEMORY DirectDraw 를 이용할 수 있는 메모리가 부족하기 때문에, 처리를 실행할 수 없다.
DDERR_OUTOFVIDEOMEMORY DirectDraw 를 이용할 수 있는 디스플레이 메모리가 부족하기 때문에, 처리를 실행할 수 없다.
DDERR_PRIMARYSURFACEALREADYEXISTS 애플리케이션은 이미 1차 표면을 생성 하고 있다.
DDERR_UNSUPPORTEDMODE 디스플레이는 현재 지원되지 않은 모드이다.
DDERR_UNSUPPORTED 처리가 지원하지 않는다.

주의

pUnkOuter 인수에 NULL 를 건네주면lplpDDSurface 인수에 DirectDraw 표면의 주소가 반환된다. 또, 안쪽의 인터페이스와 집성 하는 외부의 인터페이스의 포인터를 건네주면lplpDDSurface 인수에 대응하는 IUnknown 포인터가 반환된다.

현재의 DirectDrawEx 는,DDSCAPS 구조체의 dwcaps 멤버에 대응하는 DDSCAPS_DATAEXCHANGE 플래그도 제공한다. 이 플래그는, Ddrawex.h 에 DDSCAPS_SYSTEMMEMORY 와 DDSCAPS_VIDEOMEMORY 의 편성으로서 정의되고 있다. DDSCAPS_DATAEXCHANGE 플래그를 사용해 표면을 생성 했을 경우, 충분한 비디오 메모리를 이용할 수 없으면 표면이 자동적으로 비디오 메모리에 옮겨진다. 그 이외의 경우에는, 시스템 메모리 표면이 생성 된다. 또, 이 플래그를 DDSCAPS_OWNDC 플래그와 함께 설정 하면, 애플리케이션으로부터 IDirectDrawSurface::GetDC 메서드를 호출하는 것으로, 표면의 잠금을 보관 유지하지 않고 , 장치 문맥을 불필요하게 될 때까지 잠글 수 있다.

이 메서드는,IDirectDraw::CreateSurface 메서드와 IDirectDraw2::CreateSurface 메서드를 호출한다.

참조

↑TOP