HRESULT CSurfaceQueueDeviceD3D9::GetSharedHandle(IUnknown* pUnknown, HANDLE* pHandle) { ASSERT(pUnknown); ASSERT(pHandle); HRESULT hr = S_OK; *pHandle = NULL; IDirect3DTexture9* pTexture; if (FAILED(hr = pUnknown->QueryInterface(__uuidof(IDirect3DTexture9), (void**)&pTexture))) { return hr; } DWORD size = sizeof(HANDLE); hr = pTexture->GetPrivateData(SharedHandleGuid, pHandle, &size); pTexture->Release(); return hr; }