DWM은 문서화되지 않은 개인 DXGI COM 인터페이스를 사용합니다. 액세스 윈도우 텍스처를 얻으려는 동안 개인용 DXGI COM을 연결할 수 있습니다. Win7에 대한
: Win8에 대한
/* interface IDXGIFactoryDWM */
static const GUID IID_IDXGIFactoryDWM = {0x713F394E,0x92CA,0x47E7
,{0xAB,0x81,0x11,0x59,0xC2,0x79,0x1E,0x54}};
struct IDXGIFactoryDWM: public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE CreateSwapChain(IUnknown *pDevice,
DXGI_SWAP_CHAIN_DESC *pDesc, IDXGIOutput *pOutput,
IDXGISwapChainDWM **ppSwapChain) = 0;
};
/* interface IDXGISwapChainDWM */
static const GUID IID_IDXGISwapChainDWM = {0xF69F223B,0x45D3,0x4AA0,
{0x98,0xC8,0xC4,0x0C,0x2B,0x23,0x10,0x29}};
struct IDXGISwapChainDWM: public IDXGIDeviceSubObject
{
virtual HRESULT STDMETHODCALLTYPE Present(UINT SyncInterval, UINT Flags) = 0;
virtual HRESULT STDMETHODCALLTYPE GetBuffer(UINT Buffer, REFIID riid, void **ppSurface) = 0;
virtual HRESULT STDMETHODCALLTYPE GetDesc(DXGI_SWAP_CHAIN_DESC *pDesc) = 0;
virtual HRESULT STDMETHODCALLTYPE ResizeBuffers(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags) = 0;
virtual HRESULT STDMETHODCALLTYPE ResizeTarget(const DXGI_MODE_DESC *pNewTargetParameters) = 0;
virtual HRESULT STDMETHODCALLTYPE GetContainingOutput(IDXGIOutput **ppOutput) = 0;
virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(DXGI_FRAME_STATISTICS *pStats) = 0;
virtual HRESULT STDMETHODCALLTYPE GetLastPresentCount(UINT *pLastPresentCount) = 0;
virtual HRESULT STDMETHODCALLTYPE SetFullscreenState(BOOL Fullscreen, IDXGIOutput *pTarget) = 0;
virtual HRESULT STDMETHODCALLTYPE GetFullscreenState(BOOL *pFullscreen, IDXGIOutput **ppTarget) = 0;
};
:
struct __declspec(uuid("{1ddd77aa-9a4a-4cc8-9e55-98c196bafc8f}"))
IDXGIFactoryDWM8 : public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE CreateSwapChainDWM(
/* [annotation][in] */
_In_ IUnknown *pDevice,
/* [annotation][in] */
_In_ DXGI_SWAP_CHAIN_DESC1 *pSwapChainDesc1,
/* [annotation][in] */
_In_ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pSwapChainFullScreenDesc1,
/* [annotation][in] */
_In_ IDXGIOutput * pOutput,
/* [annotation][out] */
_Out_ IDXGISwapChainDWM8 ** ppSwapChainDWM1
) = 0;
virtual HRESULT STDMETHODCALLTYPE CreateSwapChainDDA(
/* [annotation][in] */
_In_ IUnknown *pDevice,
/* [annotation][in] */
_In_ DXGI_SWAP_CHAIN_DESC1 *pSwapChainDesc1,
/* [annotation][in] */
_In_ IDXGIOutput * pOutput,
/* [annotation][out] */
_Out_ IDXGISwapChainDWM8 ** ppSwapChainDWM8
) = 0;
}