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

IDirectDrawFactory::CreateDirectDraw

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

DirectDraw 개체를 생성 해, 그 IDirectDraw 인터페이스의 포인터를 얻어온다.

구문

STDMETHOD CreateDirectDraw(
    GUID *pGUID,
    HWND hWnd,
    DWORD dwCoopLevelFlags,
    DWORD dwReserved,
    IUnknown *pUnkOuter,
    IDirectDraw **ppDirectDraw
);

파라미터

pGUID

[out] 생성 하는 드라이버를 나타내는 글로벌 일의 식별자 (GUID)의 포인터. 액티브한 디스플레이 드라이버를 지정하려면 , NULL 를 설정한다. 또, 디버그를 위해서(때문에) 액티브한 디스플레이 드라이버의 동작을 제한하려면 , 다음의 플래그의 1 개를 건네준다.

설명
DDCREATE_EMULATIONONLY 모든 기능을 DirectDraw 개체로 에뮬레이트 한다. 하드웨어가 지원 하는 기능은 이용하지 않는다.
DDCREATE_HARDWAREONLY 하드웨어가 지원 하지 않는 기능을 DirectDraw 개체로 에뮬레이트 하지 않는다. 지원되지 않은 기능이 필요한 메서드를 호출하면, 실패해, DDERR_UNSUPPORTED (조작이 지원하지 않는다)가 반환된다.

hWnd

[in] 애플리케이션의 윈도우 핸들.

dwCoopLevelFlags

[in] 애플리케이션의 최상정도 동작. 이하의 플래그를 1 개 이상 지정한다.

설명
DDSCL_ALLOWMODEX 모드 X 디스플레이 모드를 사용 가능하게 한다. 이 플래그는, DDSCL_EXCLUSIVE 플래그 및 DDSCL_FULLSCREEN 플래그와 함께 사용해야 한다.
DDSCL_ALLOWREBOOT 애플리케이션이 풀 스크린 모드 또한 배타 모드 때에, 사용자가 Ctrl + Alt + Del 키를 눌러 재부팅 할 수 있도록(듯이) 한다.
DDSCL_EXCLUSIVE 배타 레벨을 요구한다. 이 플래그는, DDSCL_FULLSCREEN 플래그와 함께 사용해야 한다. 풀 스크린 또한 배타 협조 레벨에서는, 하드웨어를 최대한 이용할 수 있다. 이 모드에서는, 커스텀 팔레트나 동적 팔레트의 설정, 디스플레이 해상도의 변경, 메모리의 압축, 페이지 플립핑의 실현을 할 수 있다. 배타 (풀 스크린) 모드에서는, 다른 애플리케이션으로부터, 표면을 할당할 수도 있어 DirectDraw 나 GDI 를 사용할 수도 있다. 다만, 배타 모드에서는, 그 때 배타 액세스를 가지고 있는 애플리케이션 이외의 애플리케이션으로부터, 디스플레이 모드나 팔레트를 변경할 수 없다.
DDSCL_FULLSCREEN 배타 모드의 소사용자가 1차 표면 전체를 제어하는 것을 나타낸다. 이 플래그는, DDSCL_EXCLUSIVE 플래그와 함께 사용해야 한다.
DDSCL_NORMAL 애플리케이션이 보통의 Microsoft® Windows® 애플리케이션으로서 동작하는 것을 나타낸다. 이 플래그를 DDSCL_ALLOWMODEX, DDSCL_EXCLUSIVE, 또는 DDSCL_FULLSCREEN 플래그와 함께 사용할 수 없다.
DDSCL_NOWINDOWCHANGES 애플리케이션이 액티브하게 되었을 때에, DirectDraw 가 애플리케이션 윈도우를 최소화 또는 복원할 수 없는 것을 나타낸다.

dwReserved

[in] 예약이 끝난 상태. NULL 이어야 한다.

pUnkOuter

[in] 예약이 끝난 상태. NULL 이어야 한다.

ppDirectDraw

[out] IDirectDraw 인터페이스의 포인터 주소.

반환값

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

반환 코드 설명
DDERR_DIRECTDRAWALREADYCREATED 이 드라이버를 나타내는 DirectDrawEx 개체가, 이 프로세스로 이미 생성 되고 있는 것을 나타낸다.
DDERR_GENERIC 미정도리의 에러 상태이다.
DDERR_INVALIDDIRECTDRAWGUID 이 메서드에 건네진 GUID 가, DirectDrawEx 드라이버의 유효한 식별자가 아니다.
DDERR_INVALIDPARAMS 메서드에 건네진 1 개 이상의 인수가 부정하다.
DDERR_NODIRECTDRAWHW 하드웨어 전용 DirectDrawEx 개체를 생성 할 수 없다. 드라이버는 하드웨어를 지원 하지 않는다.
DDERR_UNSUPPORTED 처리가 DirectDraw 로 지원하지 않는다.
E_OUTOFMEMORY 메모리 부족을 위해, DirectDraw 개체를 생성 할 수 없다.

주의

이 메서드는, DirectDraw 의 DirectDrawCreate 함수를 사용해 DirectDraw 개체를 생성 하는 것과 같은 방법으로, DirectDraw 개체를 생성 한다. 게다가IDirectDraw2::SetCooperativeLevel 메서드가 협조 레벨을 설정하는 것과 같은 방법으로, 협조 레벨을 설정한다. 다만,IDirectDrawFactory::CreateDirectDraw 메서드의 호출이 성공하면 DirectDraw 개체가 생성 될 뿐만 아니라, DirectDraw 개체가 공개하는 IUnknown 인터페이스와 IDirectDraw 인터페이스의 포인터를 얻을 수 있다. 현재는, 애플리케이션으로부터 DirectDraw 개체에 조회하는 것에 의해,IDirectDraw3 인터페이스의 포인터 주소를 취득할 수 있다.

참조

↑TOP